我正在尝试执行一个包含一些参数和一个REF CURSOR out参数的包过程,但似乎无法弄清楚TORA(我的SQL IDE)
这是一个我想要执行的程序的例子,并看到光标:
PROCEDURE get_peeps_in_city ( pi_city IN varchar(100), po_recordset OUT REF CURSOR )
IS
BEGIN
OPEN po_recordset
FOR Select Id,
FName,
LName
FROM People
WHERE City like '%' || pi_city || '%'
END;
这是我到目前为止所尝试的内容:
DECLARE
v_cursor REF CURSOR;
BEGIN
execute PKG_PEEPS.get_peeps_in_city('Chicago', v_cursor);
END
我得到的错误是:
PLS-00103:当期待其中一个时遇到符号“END” 以下: begin function package pragma procedure子类型使用form current 光标
答案 0 :(得分:3)
你可能正在寻找这样的东西:
DECLARE
v_cursor SYS_REFCURSOR;
v_Id NUMBER;
v_FName VARCHAR2(200);
v_LName VARCHAR2(200);
BEGIN
PKG_PEEPS.get_peeps_in_city('Chicago', v_cursor);
LOOP
FETCH v_cursor INTO v_Id, v_FName, v_LName;
EXIT WHEN v_cursor%NOTFOUND;
-- do something with v_Id, v_FName, v_LName
END LOOP;
CLOSE v_cursor;
END;
/
<强>更新强>
您可能希望查询结果显示在IDE中,就像您直接运行SELECT语句一样。上面的代码不会发生这种情况,我不知道任何可以实现的代码(除非你安装了特定的表函数)。
您可以做的最好的事情是在循环中输出检索到的数据(使用DBMS_OUTPUT.PUT_LINE
)。