在Oracle SQL Developer 1.5中打印Oracle Sys_refcursor

Sanjana

我正在尝试执行返回sys_refcursor作为输出的过程。程序是PROCEDURE GET_EMPLOYEEs(P_ID in NUMBER, P_OUT_CURSOR OUT SYS_REFCURSOR);

我在SQL Developer 1.5中编写了下面的匿名块,它的执行效果很好,但是当我尝试打印光标时,出现了错误。光标返回emp_name,salary和其他列。

set serveroutput on;
declare
result sys_refcursor;
begin
emp.emp360_utils.GET_EMPLOYEEs(222334,result); 
dbms_output.put_line(result); // Error here
end;

错误是

PLS-00306: wrong number or types of arguments in call to 'PUT_LINE'

更新:游标已迭代,但仍显示错误消息“对变量dummycursor的无效引用”。

    set serveroutput on;
    declare
    dummycursor sys_refcursor;
    result sys_refcursor;
    begin
     emp.emp360_utils.GET_EMPLOYEEs(222334,result); 
    LOOP
    fetch result into dummycursor;
    EXIT when result%notfound;
    dbms_output.putline(dummycursor.lsn);
    end loop;
    end;
亚历克斯·普尔

您将需要遍历ref光标,并为其中的每一行打印出各个字段。在更新的版本中,您需要将游标读取到局部标量变量中,而不是另一个ref游标中:

set serveroutput on;
declare
  result sys_refcursor;
  lsn number; -- guessing the data type
begin
  emp.emp360_utils.GET_EMPLOYEEs(222334,result); 
  loop
    fetch result into lsn; -- and other columns if needed
    exit when result%notfound;
    dbms_output.put_line(lsn);
  end loop;
end;
/

我猜lsn是一个数字,如果没有,则将其声明为正确的类型。如果游标返回的列不止一列,那么您将需要为它们中的每一个声明局部变量,并将它们全部取入其中,即使您仅显示其中之一。


如果只想显示它,则可以使用绑定变量来执行此操作(在当前版本中选中并返回1.5.0):

variable result refcursor

begin
  emp.emp360_utils.GET_EMPLOYEEs(222334, :result); 
end;
/

print result

注意,variable命令不是declare块; 它是一个SQL Developer命令,而不是PL / SQL命令。由于是print,虽然双方都只是在SQL * Plus的文档记录。还要注意在:result块内开始的冒号,表明它是一个绑定变量,而不是本地PL / SQL变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在oracle中使用sys_refcursor创建动态sql

来自分类Dev

如何从 oracle PL/SQL 集合中选择所有行到 SYS_REFCURSOR

来自分类Dev

在 C# 实体框架中读取 Oracle SYS_REFCURSOR?

来自分类Dev

如何使用out sys_refcursor参数执行oracle过程?

来自分类Dev

ORACLE:写入返回sys_refcursor的函数的文件结果

来自分类Dev

在PL \ SQL中设置SYS_REFCURSOR以返回数据集

来自分类Dev

Oracle是否关闭从SELECT语句中使用的函数返回的SYS_REFCURSOR?

来自分类Dev

Count(*)在SQL Developer(ORACLE)中返回(行数-1)

来自分类Dev

ORACLE SQL Developer(查询)

来自分类Dev

Oracle SQL Developer更新

来自分类Dev

Oracle SQL Developer(4.0.0.12)

来自分类Dev

安装Oracle SQL Developer

来自分类Dev

Oracle Apex与Oracle SQL Developer

来自分类Dev

如何从派生自SYS_REFCURSOR的DBMS_SQL游标中获取值?

来自分类Dev

Oracle SQL Developer无法启动

来自分类Dev

Oracle SQL Developer:计划作业

来自分类Dev

在Oracle SQL Developer中插入汇总记录

来自分类Dev

Oracle SQL Developer中的脚本变量

来自分类Dev

在Oracle SQL Developer中定义变量

来自分类Dev

Oracle Sql Developer中的参考游标

来自分类Dev

PL / SQL检查大小为SYS_REFCURSOR

来自分类Dev

Oracle SQL Developer PL / SQL返回数组

来自分类Dev

Oracle修改sys refcursor并在PL / SQL中返回修改后的游标

来自分类Dev

如何使用PLSQLDeveloper窗口打印SYS_REFCURSOR?

来自分类Dev

如何使用PLSQLDeveloper窗口打印SYS_REFCURSOR?

来自分类Dev

在存储过程中声明SYS_REFCURSOR和ROWTYPE

来自分类Dev

如何使用普通游标中的值打开sys_refcursor?

来自分类Dev

ORACLE SQL DEVELOPER无法看到全部视图

来自分类Dev

Oracle SQL Developer客户端编码

Related 相关文章

热门标签

归档