CREATE PACKAGE SCHEMA_NAME.PACKAGE_NAME
AS
TYPE RefCursorTyp IS REF CURSOR
RETURN SCHEMA_NAME.TABLE_NAME%ROWTYPE;
PROCEDURE get_Strongly_Typed_Cursor (
out_cursor OUT RefCursorTyp
);
END;
/
CREATE PACKAGE BODY SCHEMA_NAME.PACKAGE_NAME
AS
PROCEDURE get_Strongly_Typed_Cursor (
out_cursor OUT RefCursorTyp
)
IS
BEGIN
OPEN out_cursor FOR
SELECT * FROM SCHEMA_NAME.TABLE_NAME;
END;
END;
/
如果你想在PL/SQL中使用它,你可以:
DECLARE
v_cur SCHEMA_NAME.PACKAGE_NAME.RefCursorTyp;
BEGIN
SCHEMA_NAME.PACKAGE_NAME.get_Strongly_Typed_Cursor(v_cur);
-- Do something with the cursor.
END;
/
SQL> var rc refcursor
SQL>
SQL> begin
2 open :rc for
3 select * from dept;
4 end;
5 /
PL/SQL procedure successfully completed.
SQL> print rc
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>
2条答案
按热度按时间iswrvxsc1#
如果你想知道如何创建一个强类型的游标,那么创建一个包并在其中定义类型:
如果你想在PL/SQL中使用它,你可以:
fiddle
gmxoilav2#
对我来说,这是做你所描述的事情的最简单的方法。
Oracle的命令行工具SQL*Plus:
或者,使用Oracle的(免费)SQL DeveloperGUI工具(代码类似于前面的代码,但它不适用于匿名PL/SQL块,而是使用返回refcursor的存储过程):