我对db没有经验(实际上根本没有),我遇到了一个问题:
我有oracle 11g,我正在使用PL / SQL开发人员
我有一个简单的程序:
type t_ref_cursor is ref cursor;
procedure fakeProc (
io_cursor in out t_ref_cursor
)
is
begin
open io_cursor for
SELECT * from myTable;
end fakeProc;
现在我想将它作为SQL窗口运行(不在测试窗口中) 我想要跑的是什么:
v_cur cursor;
begin
fakeProc(:v_cur);
end;
我收到错误: ORA-00900:无效的SQL语句 ORA-01008:并非所有变量都绑定
那么你能指出一个正确的方法来运行这样的程序(使用begin -end)吗?
答案 0 :(得分:1)
PL / SQL Developer版本7.1.4不支持引用游标:
SQL> VARIABLE p_cur REFCURSOR;
REFCURSOR not supported
更高版本可能支持它们(在命令窗口中),或者您可以使用SQL * Plus。这是SQL * Plus的直接复制粘贴:
SQL> CREATE OR REPLACE PROCEDURE prc (p_cur OUT SYS_REFCURSOR) IS
2 BEGIN
3 OPEN p_cur FOR SELECT * FROM dual;
4 END;
5 /
Procedure created.
SQL> -- declare variable
SQL> VARIABLE p_cur REFCURSOR;
SQL> BEGIN
2 prc(:p_cur);
3 END;
4 /
PL/SQL procedure successfully completed.
SQL> print p_cur
DUM
---
X
答案 1 :(得分:1)
使用类似的东西:
declare v_cur SYS_REFCURSOR;
begin
fakeProc(v_cur);
end;
程序如下:
CREATE OR REPLACE PROCEDURE FAKEPROC(
io_cursor in out SYS_REFCURSOR
)
IS
begin
open io_cursor for
SELECT * from resource_map;
END FAKEPROC;
完成使用后,不要忘记关闭光标。