BLOB変数にPDFドキュメントを移入するプロシージャがあります。私がやろうとしているのは、静的な日付から60日以内にPDF文書を表示するだけのロジックを追加することです。以下を参照してください:ORA-22275エラー:無効なLOBロケータが指定されています
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に新しいですし、私のValidIDチェックがz_lobを返すことで動作しますが、私の場合ステートメントがない理由がわからないと思います。
編集:完全なエラー・スタックに
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
であなたのロブを初期化するあなたの
return z_lob;
を変更することができます。これで、再割り当てされ、優先順位が変更されました。しかし、あなたの答えは最終的に働いた。ありがとう! – Phoenix'DBMS_LOB.OPEN'と同様に、 - ' DBMS_LOB.CREATETEMPORARY( lob_loc => z_lob 、キャッシュ=> true 、dur => dbms_lob.call); DBMS_LOB.OPEN( lob_loc => z_lob 、open_mode => DBMS_LOB.LOB_READWRITE); ' - それが動作します。 – PhistucK