sqlplus 调试存储过程
2024-10-19 14:47:46
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 ] ]
最新文章
- ScrollView嵌套ListView,GridView数据加载不全问题的解决
- Python中的if __name__=&#39;__main__&#39;语句的作用
- 设置 iOS 应用的图标和名称
- 插件开发--BE插件开发
- css学习中的一些英文单词
- git clone 失败问题解决方案
- 03.NopCommerce功能与特点介绍
- ReactNative
- java 面试 复习 II
- MySQL 触发器结构及三个案例demo
- Date的使用
- python __str__ 和__repr__方法
- 原生CSS动画回调事件
- 台达PLC实现远程下载程序
- 如何在Ubuntu上安装LAMP服务器系统?
- 《CSAPP》 可重定位目标文件格式
- git+gitolite如何实现权限控制
- 【转】你必须知道的EF知识和经验
- Apache+Nginx+php共存(一)
- 批处理学习笔记6 - 重定向符>;和>;>;