【问题标题】:Print Oracle PLSQL OUT variable打印 Oracle PLSQL OUT 变量
【发布时间】:2014-01-19 23:50:36
【问题描述】:
create or replace package demo_pckg 
as
 type cursor_type is ref cursor;
 procedure demo_proc(i_deptno number,o_result out cursor_type);
end;
/


create or  replace package body demo_pckg
as
procedure demo_proc(i_deptno number,o_result out cursor_type)
as
 begin
    open o_result for
    select * from employees 
    where department_id=i_deptno;
    end;
end;
/

如果我想打印那个 OUT 游标变量,我应该怎么做?

【问题讨论】:

  • “打印”是什么意思?在 sqlplus 中显示结果集?还有什么?

标签: oracle oracle11g


【解决方案1】:

SQL*Plus 或 SQL Developer 中最简单的方法是使用 variableprint

var deptno number
var result refcursor
exec :deptno := 10;
exec demo_pckg.demo_proc(:deptno, :result);
print result

或者:

var result refcursor
declare
  deptno emplyees.department_id%type;;
begin
  deptno := 10;
  demo_pckg.demo_proc(deptno, :result);
end;
/
print result

result 在过程调用中被视为绑定变量,因此它的前缀为 :,但它是 SQL*Plus 的本机变量,因此它没有用于 print 调用的变量。您可以在 SQL*Plus 中运行,也可以在 SQL Developer 中作为脚本运行,这将在“脚本输出”窗口中显示结果。

当然,无论哪种情况,您都可以在过程调用中对deptno 值进行硬编码,而不是用一个变量来保存它。

如果您从 Java 或其他一些客户端程序调用它,您可以像对待任何其他结果集一样对待您的 OUT 光标。

您还可以在过程中将result 声明为sys_refcursor,而不是声明您自己的类型。

【讨论】:

    【解决方案2】:

    dbms_output.put_line 打印到标准输出。您需要启用服务器输出以查看结果:set serveroutput on。打开服务器输出应该在你的环境中完成,比如 sqlplus 等。 您需要使用select column1 into var1 from ... 将结果选择到变量中,以便稍后使用dbms_output.put_line('my var1: ' || var1); 打印它们

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多