9

BLOB 変数に PDF ドキュメントを設定する手順があります。私がやろうとしているのは、静的な日付から 60 日以内に PDF ドキュメントのみを表示するロジックを追加することです。下記参照:

check_staticdate     number(1); 

function DisplayPDF (audit in number) RETURN blob is

person_id     person.person_id%type;
z_lob         blob;
blob_length   NUMBER;


CURSOR getPDF(audit number) IS
   select report
   from report_table
   where report_type = 'PDF'
   and job_no = audit order by rec_no;


begin

/* Check Valid ID */
if not package.ValidID(person_id, check_only=>TRUE) then
   return z_lob;
end if;


/* Here is the case statement.*/
select case
   when exists
      (
       SELECT 'x' from table
       where table_id = person_id
       and trunc(sysdate) < trunc(table_static_date + 60)
      )

    then 1
    else 0
   end into check_staticdate
from dual;


if (check_staticdate = 0) then
   return z_lob;
end if;



open getPDF(audit);
fetch getPDF into z_lob;
close getPDF;
return z_lob;


end DisplayPDF;

私が受け取っているエラーは次のとおりです。ORA-22275: invalid LOB locator specified.

私は Oracle SQL を初めて使用します。z_lob を返すことで ValidID チェックが機能するのに、case ステートメントが機能しない理由がわかりません。

編集:完全なエラースタックを追加

Failed to execute target procedure ORA-22275: invalid LOB locator specified

ORA-06512: at "SYS.WPG_DOCLOAD", line 51

ORA-06512: at "User.Package", line 733

ORA-06512: at line 33
4

2 に答える 2

1

あなたの関数はおそらく (auditパラメーター値に応じて) NULL 値を持つ blob を、表示されてSYS.WPG_DOCLOADいる未処理の例外をスローするメソッドに返しています。

おそらく、あなたはあなたを変えることができreturn z_lob;ますreturn nvl(z_lob, empty_blob());

于 2013-04-06T00:21:35.923 に答える