Я пытаюсь создать строку для использования в операторе execute_immediate для вставки в таблицу.Одним из используемых столбцов является тип BLOB.Я использую '||'оператор, чтобы добавить столбцы и построить sql.Похоже, что BLOB-тип работает с '||'.См. Пример кода (не оригинал) и ошибка
declare
FIRST_NAME varchar2(10);
PICTURE blob; -- blob type
TEMP_STR varchar2(2000);
begin
FIRST_NAME := 'Arun';
-- a blob is created
DBMS_LOB.CREATETEMPORARY(PICTURE, true); </p>
<pre><code>-- 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;
</code>
ОШИБКА
Отчет об ошибке: 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 в таблицу.