带有动态 SQL 语句的游标 For 循环

2023-12-29

有没有办法用动态 SQL 语句执行 Cursor For 循环?

如果我不想声明记录,我可以这样做(仅当我声明游标时..):

For I in cuSelect Loop
  dbms_output.put_line(I.NAME);
End Loop;

我可以为动态 SQL 语句打开游标:

Open cuSelect For 'Select * From TAB_X';
Fetch ceSelect Into recSelect;
Close cuSelect;

但要做到这一点,我必须首先声明记录。

现在我的问题是我必须为一个非常大且复杂的动态 SQL 语句打开游标。该记录的结构未知。有没有办法打开变量游标并使用“未声明”记录迭代它?


我认为你可以用 DBMS_SQL 包做你想做的事。

您还可以检查这些:

  • 使用动态 SQL http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/dynamic.htm
  • COLUMN_VALUE 过程 http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#i1025449

例如:

declare
  TYPE curtype IS REF CURSOR;
  src_cur      curtype;
  curid        NUMBER;
  namevar  VARCHAR2(50);
  numvar   NUMBER;
  datevar  DATE;
  desctab  DBMS_SQL.DESC_TAB;
  colcnt   NUMBER;
  dsql varchar2(1000) := 'select card_no from card_table where rownum = 1';
begin
  OPEN src_cur FOR dsql;

  -- Switch from native dynamic SQL to DBMS_SQL package.
  curid := DBMS_SQL.TO_CURSOR_NUMBER(src_cur);
  DBMS_SQL.DESCRIBE_COLUMNS(curid, colcnt, desctab);

  -- Define columns.
  FOR i IN 1 .. colcnt LOOP
    IF desctab(i).col_type = 2 THEN
      DBMS_SQL.DEFINE_COLUMN(curid, i, numvar);
    ELSIF desctab(i).col_type = 12 THEN
      DBMS_SQL.DEFINE_COLUMN(curid, i, datevar);
    ELSE
      DBMS_SQL.DEFINE_COLUMN(curid, i, namevar, 50);
    END IF;
  END LOOP;

  -- Fetch rows with DBMS_SQL package.
  WHILE DBMS_SQL.FETCH_ROWS(curid) > 0 LOOP
    FOR i IN 1 .. colcnt LOOP
      IF (desctab(i).col_type = 1) THEN
        DBMS_SQL.COLUMN_VALUE(curid, i, namevar);
        dbms_output.put_line(namevar);
      ELSIF (desctab(i).col_type = 2) THEN
        DBMS_SQL.COLUMN_VALUE(curid, i, numvar);
        dbms_output.put_line(numvar);
      ELSIF (desctab(i).col_type = 12) THEN
        DBMS_SQL.COLUMN_VALUE(curid, i, datevar);
        dbms_output.put_line(datevar);
      END IF;
    END LOOP;
  END LOOP;

  DBMS_SQL.CLOSE_CURSOR(curid);

end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有动态 SQL 语句的游标 For 循环 的相关文章

  • 使用 JDBC 获取 Oracle 11g 的最后插入 ID

    我是使用 Oracle 的新手 所以我将放弃之前已经回答过的内容这个问题 https stackoverflow com questions 3131064 get id of last inserted record in oracle
  • C 中是否可以动态定义结构体

    我很确定这最终将成为一个非常明显的问题 这就是为什么我没有找到太多关于它的信息 不过 我认为还是值得问一下 基本上 使用结构访问数据非常快 如果数据以一种可以立即作为结构进行处理的形式从网络中出来 那么从性能的角度来看 这是非常好的 但是
  • 什么是 Oracle 会话?

    我使用的是 Oracle 11g 我正在寻找 Oracle 会话的良好解释 我用谷歌搜索了这个 但奇怪的是 没有一个网站包含任何关于预言机会话是什么的解释 我的具体问题是 1 什么是预言机会话 2 一个连接对象是否总是与一个 oracle
  • 每当 SQLERROR 永远不起作用时

    我不知道可能是什么原因 我已经在网上花了几个小时试图找出我的情况出了什么问题 我查过官方文档 https docs oracle com cd B19306 01 server 102 b14357 ch12052 htm还有一些汤姆 凯特
  • 在 SQL 中搜索 XML 列

    我有一个 XML 文档来存储 Oracle 数据库中的记录 表 CourseXML 将包含 Record Number int XML Type int XMLDoc clob etc 我想通过 XML 标签在 XMLDoc 列中进行搜索
  • 如何将一个div的内容克隆到另一个div

    我想使用jquery克隆将选定div的内容复制到另一个div 但我不想将它附加到任何地方 我的意思是 当我们用 jquery 克隆一个 div 时 如果我错了 请纠正我 我们必须设置它的位置 它将动态创建一个显示的新分区 但我想获取所选di
  • 如何获取 PostgreSQL 游标的行数?

    我有一个使用创建的光标WITH HOLD允许游标用于后续事务的选项 我想检索游标可以获取的行数 由于保留游标表示的行被复制到临时文件或内存区域中 我想知道是否可以以直接的方式检索该数字 或者唯一的解决方案是获取所有记录来对它们进行计数 在这
  • 使用 Oracle Wallet 身份验证从 Spring-jdbc 连接到 Oracle DB

    我将 Spring jdbc 与 org apache commons dbcp BasicDataSource 结合使用 使用用户名和密码进行连接 我想使用BasicDataSource 因为我只有一个连接 我有这个代码
  • 使用 Oracle 数据库的 JOIN 语法进行更新

    首先 我执行以下 SQL 语句 drop table names drop table ages create table names id number name varchar2 20 insert into names values
  • 匹配可能存在或可能不存在的组

    我的正则表达式需要解析一个如下所示的地址 BLOOKKOKATU 20 A 773 00810 HELSINKI SUOMI 1 2 3 4 第一组 第二组和第三组将始终存在于地址中 第 4 组可能不存在 我编写了一个正则表达式来帮助我获得
  • Oracle PLSQL 将日期时间截断为 15 分钟块

    我想将我的数据聚合成 15 分钟的片段 一刻钟 为此 我编写了一些生成 15 分钟日期时间块的代码 SELECT TRUNC SYSDATE hh 0 25 24 ROWNUM 0 25 24 AS time start ROWNUM TR
  • Oracle 奇怪的 SUM 行为

    我有两个查询 据我了解 这两个查询应该提供相同的结果 但事实并非如此 显然我在这里遗漏了一些重要的观点 我希望你能帮助我 查询 我认为这是错误的 SELECT SUM a amount AS A SUM 10 727 470 FROM bi
  • ORA-12154: TNS: 无法解析指定的连接标识符

    当我安装服务器版本和现有的 Oracle 10g 客户端版本时 问题就开始了 背景 安装了 Oracle 客户端版本 10g 位于 c oracle 以连接到位于其他国家 地区的数据库 所以我们只能连接到它并且对它的访问权限有限 路径 gt
  • ORACLE 在立即执行中批处理 DDL 语句

    我正在尝试在一个 Execute Immediate 语句中运行多个 ddl 语句 我认为这会很简单 但看来我错了 想法是这样的 declare v cnt number begin select count into v cnt from
  • 如何从oracle存储过程中提取out变量?

    我有存储过程 其中有很多输出变量 所以我这样调用存储过程 export const infoHR3 async gt try const sql Declare ln order qty NUMBER ln in proc qty hr N
  • 查看oracle中重复行的所有数据

    我有一个有 6 列的表 id name type id code lat long 前三个是必需的 ID是私钥 按序列自动插入 我有一些重复的行 正如两者所定义的name and type id是平等的 但我想查看受骗者的所有数据 我可以很
  • 金融 - 计算到期收益率

    我读了this https stackoverflow com questions 1173555 open source financial library specifically yield to maturity发布关于 net 库
  • oracle to_date 转换显示文字与字符串格式不匹配

    如果我使用 unixtime 转换器 我会得到 2005 年 5 月 31 日星期二 16 23 17 GMT 1117556597 如果我运行以下查询 则会收到错误 文字与字符串格式不匹配 这是为什么 select to date 111
  • 从字典创建 Swift 对象

    如何根据 Swift 字典中的查找值动态实例化类型 希望这对其他人有用 我们需要进行一些研究才能弄清楚这一点 目标是避免巨大的 if 或 switch 语句从值创建每个对象类型的反模式 class NamedItem CustomStrin
  • Postgresql存储过程中基于会话的全局变量?

    在 Oracle 的 PL SQL 中 我可以使用包定义创建基于会话的全局变量 对于 Postgresql 的 PLpg SQL 这似乎是不可能的 因为没有包 只有独立的过程和函数 以下是 PL SQL 将 g spool key 声明为全

随机推荐

  • 从两个表中选择单独的行,按日期排序

    I don t想要任何一种JOIN这里 我正在使用 PHP 构建两个表的 RSS 提要 并且我想从两个表中选择所有行 保持行分开 但按公共排序created column 例如 如果我有一张桌子foo id downloads views
  • Windows 中的 cmake 问题

    我正在尝试编译这个 相当复杂 在 Windows 中使用 cmake 和 MinGW 的一段代码 include
  • 可能的堆栈损坏

    参考我之前的问题GDB 未精确定位 SIGSEGV 点 https stackoverflow com q 3971091 191776 我的线程代码如下 void runner void unused do sem wait x if c
  • 如何在 aspnet vnext config.json 文件中配置实体框架拦截器?

    在网络配置文件中 我会这样做
  • 你能解释一下 onCreate 和 Bundles 吗?

    我一直在查找它 但我似乎无法将自己包裹在 onCreate 和 Bundles 中 我知道 onCreate 在程序启动时被调用 但它是如何传递 Bundles 以及它们如何相关的 任何人都可以尝试用简单的英语来表达它 因为我似乎找不到它的
  • Django 结账无法访问:找不到页面(404)

    我正在尝试使用 Django 开发一个电子商务网站 所以我现在 用户可以将商品添加到购物车 但是当我尝试继续结帐时 由于某种原因 我的结帐表单没有显示 而是显示 找不到页面 404 我确保我已经注册了我的模型并运行了迁移 问题是什么 我的观
  • django 1.10 媒体图像不显示

    我通过将以下内容添加到站点 urls py 让 django 媒体图像在现有的 django 1 7 项目中工作 urlpatterns patters url r media P
  • 适用于 VS11 开发者预览版的 MySQL 提供程序

    是否有与 Visual Studio 11 开发人员预览版集成的 MySQL 连接提供程序 我已经尝试过 MySQL 连接器 v6 4 4 但我没有看到从新连接对话框连接到 MySQL 数据库的选项 我调整了 Net Connector 版
  • 如何执行存储在 MySQL 表列中的查询?

    mysql gt select from CT CID MID REPORT QUERY 1 1 select from emp 2 2 select from student 2 rows in set 0 00 sec 我想执行查询RE
  • 在 rgl 中填充轮廓

    以下代码绘制一些点并用线连接它们 我要填写 由选择颜色和 Alpha 的线条包围的区域 我似乎不知道如何使用 rgl 做到这一点 Open plot and add axes open3d decorate3d xlim c 0 4 yli
  • 如何使用 Qt 4 创建 OpenGL 3 上下文?

    我想学习使用 OpenGL 进行图形编程 因为我刚刚开始学习它 所以我决定学习新的 OpenGL3 的做事方式 据我所知 必须为此创建一个 OpenGL 3 上下文 如果我理解正确的话 新的 OpenGL 3 2 中的核心配置文件 嗯 我考
  • 我几乎每次都将 Stateless Widget 与 BLoC 一起使用。我错了吗?

    我很难理解如何使用 Flutter 处理某些特定情况下的状态 例如 假设我需要一个页面 单击按钮即可从 API 获取数据 这样的请求可能需要时间或者可能发生任何类型的问题 因此 我可能会使用 BLoC 模式在请求经历各种 状态 时正确通知用
  • JQuery 表排序器问题

    我在使用 JQuery 时遇到了一些问题表格排序器 http tablesorter com docs 插入 如果单击列标题 它应该按此列对数据进行排序 但存在一些问题 行未正确排序 1 1 2183 236 总行数包含在排序中 关于 2
  • 将简单查询转换为蛋糕查询?

    实际上我有 1 个查询 但我无法将其转换为 CakePHP 查询格式 result select from esl userresults where esl userresults esl songID esl lyrics id and
  • 多线程可以在单处理器系统上实现吗?

    我一直遵循这样的概念 多线程只能在多处理器系统上实现 其中有多个处理器分配给每个线程 并且每个线程可以同时执行 在这种情况下没有调度 因为每个线程都有单独的资源专用于它 但我最近在某处读到我也可以在单处理器系统上执行多线程 这是对的吗 如果
  • 是否可以使固定位置的 div 响应式?

    我一直在尝试使一些 SVG 数据图表具有响应性 但似乎无法通过应用于元素的当前 CSS position fixed 来做到这一点 如果可能的话 我正在寻找一种不依赖于媒体查询的解决方案 因为我有多个元素需要应用它 如果这是不可能的 那么在
  • 使用PostgreSQL plpython3u函数返回一个表

    我想退回桌子 该函数获取一个数组 查询为 select function name array agg column name from table name 我编码如下 create type pddesctype as count fl
  • C# 无法加载文件或程序集“Microsoft.SharePoint.Library”

    我正在 64 位版本的 Windows 7 上进行开发 运行 MOSS SharePoint 这是我的开发机器 现在 当我将 Web 服务应用程序部署到测试服务器 Windows 2003 32 位 未安装 Sharepoint 时 我收到
  • iOS 中的上滑菜单

    如何创建一个像相机胶卷中那样的 向上滑动 菜单 您可以在其中选择是否要将图像作为电子邮件 彩信等发送 An UI操作表 http developer apple com library ios documentation uikit ref
  • 带有动态 SQL 语句的游标 For 循环

    有没有办法用动态 SQL 语句执行 Cursor For 循环 如果我不想声明记录 我可以这样做 仅当我声明游标时 For I in cuSelect Loop dbms output put line I NAME End Loop 我可