2

エラーが表示されます - PLS-00382 式が間違った型です。
参照カーソルを出力として取得したい。どうすればこれができるか教えてください

create or replace function  test_cur
return sys_refcursor
as
  var_ref sys_refcursor;
begin
  open var_ref for
  select item,status
    from item_master  
   where rownum <10;
  return var_ref;
end;


declare
  l_var sys_refcursor;
  l_item varchar2(100);
  l_status varchar2(10);
begin
  l_var:=test_cur;
  open l_var;
  loop
    fetch l_var into  l_item,l_status;
    exit when l_var%notfound;
    dbms_output.put_line(l_item||','||l_status);
  end loop;
end;

誰でもこの問題を解決するのを手伝ってもらえますか?

4

2 に答える 2

5

ソーステーブルを変更しただけで、いくつかの間違いがあります。私の作業例を見てください。

CREATE OR REPLACE FUNCTION  TEST_CUR RETURN SYS_REFCURSOR
AS
   VAR_REF SYS_REFCURSOR;
BEGIN
    OPEN VAR_REF FOR
        SELECT *
        FROM DUAL;

    RETURN VAR_REF;
END;

ここでは、カーソルを開く必要はありません。すでに開いています。

DECLARE
    L_VAR SYS_REFCURSOR;
    L_STATUS VARCHAR2(10);
BEGIN
    L_VAR:=TEST_CUR;
    LOOP
        FETCH L_VAR INTO L_STATUS;
        EXIT WHEN L_VAR%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE( L_STATUS );
    END LOOP;
    CLOSE L_VAR;
END;

Oracle カーソルをテストする方法を示す非常に興味深い投稿:

Oracle Ref Cursor の結果をテストする 5 つの異なる方法

于 2014-09-17T12:57:52.290 に答える