zoukankan      html  css  js  c++  java
  • sqlplus 调试存储过程

    SQLPLUS里测试带返回参数的存储过程
    过程名p_test
    入参 aa varchar2
    出参 bb sys_refcursor

    在SQLPLUS里如何将sys_refcursor 这个结果集获取出来呢

    ------解决方案--------------------

    SQL code
    --你试过么,就说定义不了。
    [TEST@myoracle] SQL>create or replace procedure my_proc(
      2   i_aa varchar2,
      3   o_cursor out sys_refcursor
      4  )
      5  as
      6  begin
      7    open o_cursor for
      8     select * from tab where 1=i_aa;
      9  end;
     10  /
    
    过程已创建。
    
    [TEST@myoracle] SQL>var aa varchar2(2000);
    [TEST@myoracle] SQL>var bb refcursor;
    [TEST@myoracle] SQL>begin :aa := 1; end;
      2  /
    
    PL/SQL 过程已成功完成。
    
    [TEST@myoracle] SQL>exec my_proc(:aa,:bb);
    
    PL/SQL 过程已成功完成。
    
    [TEST@myoracle] SQL>print :bb;
    
    TNAME                          TABTYPE  CLUSTERID
    ------------------------------ ------- ----------
    TEST                           TABLE
    T1                             TABLE
    
    [TEST@myoracle] SQL>

    ------解决方案--------------------
    sys_refcursor 实质就是 refcursor
    所以,你只要定义 refcursor 就可以
    你如果 var bb sys_refcursor 这肯定就报错了
    探讨

    引用:
    SQL code


    var aa varchar2(2000);
    var bb REFCURSOR;
    exec p_test(:aa,:bb);
    print bb;


    var bb REFCURSOR; --我的出参是sys_refcursor类型,定义不了

    ------解决方案--------------------
    pl/sql 是定义不了refcursor的
    但在sqlplus里完全可以

    var aa varchar2(2000);
    var bb REFCURSOR;
    exec p_test(:aa,:bb);
    print bb;

    另sqlplus里,
    var bb sys_refcursor;
    显示:用法: VAR[IABLE] [ <variable> [ NUMBER | CHAR | CHAR (n [CHAR|BYTE]) |
    VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) |
    NVARCHAR2 (n) | CLOB | NCLOB | REFCURSOR |
    BINARY_FLOAT | BINARY_DOUBLE ] ]
  • 相关阅读:
    Individual Reading Assignment
    Individual P1: Summary
    Individual P1: Preparation
    M1m2分析报告
    第二次阅读作业--12061161 赵梓皓
    代码互审报告
    结对编程————电梯整理报告
    读书问题之《编程之美》 -----12061161 赵梓皓
    SE Class's Individual Project--12061161 赵梓皓
    博客测试
  • 原文地址:https://www.cnblogs.com/dingyingsi/p/3401347.html
Copyright © 2011-2022 走看看