我正在尝试创建一个字符串以在 execute_immediate 语句中使用以插入表中。使用的列之一是 BLOB 类型。我正在使用“||” 运算符来追加列并构建 sql。BLOB 类型似乎不适用于“||”。请参阅示例代码(非原始代码)和错误
宣布
FIRST_NAME varchar2(10);
图片斑点;-- 斑点类型
TEMP_STR varchar2(2000);
开始
FIRST_NAME := '阿伦';
-- 创建一个 blob
DBMS_LOB.CREATETEMPORARY(图片,真);
-- 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 值插入表的选项。