当前位置: 首页 > 面试题库 >

如何在plsql的过程体内创建游标

经嘉
2023-03-14
问题内容

我想 动态地在过程主体内 创建 游标, 我也必须使用 for循环 而不是下面的代码。我做了动态光标,但我不能使用for循环。

PROCEDURE myprocedure
AS
  LV_TEST_CUR SYS_REFCURSOR;
  LV_QUERY VARCHAR2(200);
  LV_DATE  DATE;
BEGIN
  LV_QUERY:='select sysdate as mydate from dual';
  OPEN LV_TEST_CUR FOR LV_QUERY;
  /*FOR CUR_VAR IN LV_TEST_CUR
  LOOP
  dbms_output.put_line(CUR_VAR.mydate);
  end LOOP;
  */
  LOOP
    FETCH LV_TEST_CUR INTO LV_DATE;
    EXIT
  WHEN LV_TEST_CUR%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(LV_DATE);
  END LOOP;
  CLOSE LV_TEST_CUR;
END myprocedure;

如果我使用注释的代码(用于循环),我会报错

PLS-00221:不是过程或未定义

是否可以在动态游标中使用for循环?


问题答案:

您不能在游标FOR循环中引用游标变量

但是您可以直接使用选择语句:

create or replace PROCEDURE myprocedure
AS
  LV_TEST_CUR SYS_REFCURSOR;
  LV_QUERY VARCHAR2(200);
  LV_DATE  DATE;
BEGIN
  FOR CUR_VAR IN (select sysdate as mydate from dual)
  LOOP
  dbms_output.put_line(CUR_VAR.mydate);
  end LOOP;

END myprocedure;
/


 类似资料:
  • 我是一个仍在学习Android系统的开发人员,到目前为止,我已经创建了两个应用程序,一个闹钟,一个小部件和一个使用数据库的通行证管理器,我有一点经验,但我想创建一个2D侧滚动游戏,我在网上查看,有不同的教程,但是,开始使用它的最佳方法是什么?我读过libgdx,但我不确定它是否过时。 我看到所有的游戏都是用Java制作的,然后移植到Android系统,这是正确的吗?我希望得到一些指导,谢谢!

  • 为了解决MySql中的问题,即某些语句只允许在我试图创建的存储过程中运行,然后在JdbcTem板提交的sql中删除存储过程。一个简单的例子是(这恰好是在Spring引导中): cript.sql在哪里 在mySql workbench中运行它可以很好地工作,但是由JdbcTemplate提交时会出现错误 据我所知,这是因为JdbcTemplate不允许使用那些

  • 主要内容:一、MySql中的线程创建方式,二、具体源码,三、总结一、MySql中的线程创建方式 为了跨平台主要支持WIN和LINUX,在创建的源码中也可以看这两种创建的方式,在源码中可以清晰的看到区别这两的方式仍然使用的经典的宏判断。其实线程落到这里,基本上就回到了传统的线程处理的整个过程,只是看开发者对其是否进行二次封装和抽象。下面看一下相关的代码分析。 二、具体源码 从上一篇add_connection这个函数开始看: 首先检查一下有没有空闲的线程,如果有

  • 为什么它不起作用?我在甲骨文中运行这个。我想创建这样的装饰: 这是错误: PLS-00103:在预期以下情况之一时遇到符号“DECLARE”:begin函数杂注过程子类型当前游标删除存在于外部语言之前符号“begin”被替换为“DECLATE”以继续。7/5 PLS-00103:在预期以下情况之一时遇到符号“文件结束”:(开始情况声明结束异常退出,如果循环mod null pragma引发返回选择

  • 问题内容: 如何在内存中(而不是在硬盘上)创建新的(由)? 我正在使用Java语言。我不想将文件保存在硬盘上。 我遇到了一个错误的API()。期待着。我没有文件(只有内容),可以创建临时文件,但这不是一个漂亮的解决方案。我需要验证签名罐子的摘要。 在不创建临时文件的情况下如何获得清单的任何示例将不胜感激。 问题答案: 要在内存中写入流,请使用:

  • 问题内容: 我在詹金斯(Jenkins)有2个工作: 建立并运行单元测试 (构建并)运行集成测试 Job-2 是 Job-1 的下游项目。 Job-1 在其上启动构建并运行单元测试。 Job-2 也会启动构建并运行集成测试。 我想更改它, 并使 Job-2 在由 Job-1 启动的结果构建上运行测试。 问题答案: 您可以使用Copy Artifact插件,并使用Job-2中的Job-1工件对它们进