我有一个问题
select * from myTable
Run Code Online (Sandbox Code Playgroud)
...我希望将此查询包装在存储过程中,并让存储过程输出此查询的结果.
我该怎么做?
在ms-sql中,我可以将查询作为字符串存储到字符串变量中.然后执行"执行(变量)".为什么Oracle中没有这样的东西?
使用:
CREATE OR REPLACE PROCEDURE MY_SPROC() RETURN SYS_REFCURSOR
L_CURSOR SYS_REFCURSOR;
BEGIN
OPEN L_CURSOR FOR
SELECT * from MYTABLE;
RETURN L_CURSOR;
END;
Run Code Online (Sandbox Code Playgroud)
如果要在Oracle上运行动态SQL,请使用此选项:
CREATE OR REPLACE PROCEDURE MY_SPROC() RETURN SYS_REFCURSOR
L_CURSOR SYS_REFCURSOR;
L_QUERY VARCHAR2(5000) DEFAULT 'SELECT ...';
BEGIN
OPEN L_CURSOR FOR L_QUERY;
RETURN L_CURSOR;
END;
Run Code Online (Sandbox Code Playgroud)
如果要在动态SQL中包含绑定变量:
CREATE OR REPLACE PROCEDURE MY_SPROC() RETURN SYS_REFCURSOR
L_CURSOR SYS_REFCURSOR;
L_QUERY VARCHAR2(5000) DEFAULT 'SELECT ...';
BEGIN
OPEN L_CURSOR FOR L_QUERY
USING bind_var1;
RETURN L_CURSOR;
END;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7843 次 |
| 最近记录: |