次のようにプロシージャを作成します
CREATE OR REPLACE PROCEDURE get_cdr_rs_phone (
cdr_recordset OUT sys_refcursor
)
AS
BEGIN
OPEN cdr_recordset FOR
SELECT zkv.ciscocuic_tbl.fld_callingpartynumber
FROM zkv.ciscocuic_tbl;
END get_cdr_rs_phone;
/
手順を実行します
variable r refcursor;
DECLARE
BEGIN
get_cdr_rs_phone (:r);
END;
/
print r
アップデート1
プロシージャが選択のみを実行している場合は、sys_refcursorを返す関数を使用してこれを実行でき、関数はsqlステートメントから実行できます。
次のように関数を作成します
CREATE OR REPLACE FUNCTION get_cdr_rs_phone_func
RETURN sys_refcursor
AS
out_cursor sys_refcursor;
BEGIN
OPEN out_cursor FOR
SELECT zkv.ciscocuic_tbl.fld_callingpartynumber
FROM zkv.ciscocuic_tbl;
END get_cdr_rs_phone;
RETURN out_cursor;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
--raise error
WHEN OTHERS
THEN
--raise error
END get_cdr_rs_phone_func;
/
この関数を次のように呼び出します
select get_cdr_rs_phone_func from dual;