0

pl/sqlでプロシージャを記述しています。プロシージャを実行するとエラーが発生します。ここにプロシージャを同封しました。

code

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;
/

getting error when i run this proc
4

1 に答える 1

1

次のようにプロシージャを作成します

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;
于 2012-11-19T11:09:00.890 に答える