Iamは、テーブルに挿入するためのexecute_immediateステートメントで使用する文字列を作成しようとしています。使用される列の1つはBLOB型です。'||'を使用しているIam 列を追加してSQLを構築する演算子。BLOB型は'||'では機能しないようです。サンプルコード(オリジナルではない)とエラーを参照してください
宣言する
FIRST_NAME varchar2(10);
PICTUREブロブ; --blobタイプ
TEMP_STR varchar2(2000);
始める
FIRST_NAME:='アルン';
--BLOBが作成されます
DBMS_LOB.CREATETEMPORARY(PICTURE、true);
-- next line works
insert into BLOB_TEST (PERSON_NAME,PHOTO) values (FIRST_NAME,PICTURE);
-- creating the string
TEMP_STR := 'insert into BLOB_TEST values (''' || first_name||''''||','||PICTURE||')';
-- just to view the string
DBMS_OUTPUT.PUT_LINE(TEMP_STR);
/* code to be done */
-- execute immediate(temp_str);
end;
エラー
エラーレポート:
ORA-06550:行9、列17:
PLS-00306:'||'の呼び出しで引数の数またはタイプが間違っています
ORA-06550:行9、列5:
PL / SQL:ステートメントは無視されます
06550. 00000-「行%s、列%s:\ n%s」
*原因:通常、PL/SQLコンパイルエラー。
*アクション:
My table BLOB_TEST is
create table BLOB_TEST
(
PERSON_NAME varchar2(20),
PHOTO blob
);
助けてください。私が欲しいのは、BLOB値をテーブルに挿入するために挿入ステートメントを動的に実行するオプションです。