我正在尝试创建一个字符串以在 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 值插入表的选项。