一直以为在存储过程里面只能通过execute immediate 动态执行SQL语句,没想到朋友今天发来一段代码:
我笑,我说这样的异想天开是不行的,连ORACLE的参考书上都没说可以这样用。
结果,自己运行了一下代码,居然可以正常工作。
开来得好好嘲笑一下自己了!
嗯,所以…………记下来,谦虚点认真学ORACLE。
CREATE
OR
REPLACE
PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR ;
PROCEDURE get (p_rc OUT myrctype);
END pkg_test;
/
CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE get ( p_rc OUT myrctype)
IS
sqlstr VARCHAR2 ( 500 );
BEGIN
sqlstr : = ' select * from a_table ' ;
OPEN p_rc FOR sqlstr;
END get;
END pkg_test;
AS
TYPE myrctype IS REF CURSOR ;
PROCEDURE get (p_rc OUT myrctype);
END pkg_test;
/
CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE get ( p_rc OUT myrctype)
IS
sqlstr VARCHAR2 ( 500 );
BEGIN
sqlstr : = ' select * from a_table ' ;
OPEN p_rc FOR sqlstr;
END get;
END pkg_test;
结果,自己运行了一下代码,居然可以正常工作。
开来得好好嘲笑一下自己了!
嗯,所以…………记下来,谦虚点认真学ORACLE。