Oracle DB SQL вставляет строку base64 (> 4000 символов) в столбец BLOB таблицы в SQL - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь вставить длинную строку base64 (рисунок) в столбец BLOB таблицы и получаю сообщение об ошибке «string literal too long». Строковый литерал длиннее 4000 символов, и это правда, но я неНе знаю другого способа сделать это, я использую SQL-разработчик.

Мой синтаксис такой:

Insert into TABLE_NAME ( BLOB_COLUMN ) VALUES ('/9j/4AAQSkZJRgABAgA...2Q==');

Я пробовал функции CAST('Expression' AS BLOB), TO_BLOB, но каждый раз получаю одно и то жерезультат.

Как я могу это сделать?Я потерялся.Кто-то за помощь?

Большое спасибо

1 Ответ

0 голосов
/ 10 мая 2018

Если требуется просто сохранить строку, я бы порекомендовал CLOB вместо BLOB, так как для хранения текста в столбце BLOB его необходимо привести к RAW.Поиск одинаково сложен.

Это не может быть сделано в SQL, так как 4000 символов - это максимум, который вы можете присвоить строковому полю.Тем не менее, вот мой обходной путь с использованием небольшого блока Pl / Sql (в Pl / Sql максимум 32767 символов.

CREATE TABLE clob_ins_test (
    clob_column CLOB
);
/

Table CLOB_INS_TEST created.

SET SERVEROUTPUT ON;
DECLARE
    v_long_text VARCHAR2( 5000 );
BEGIN
    v_long_text := LPAD( '1', 3500, '1' ) || LPAD( '1', 600, '1' ); /* Assign your string value here as v_long_text := '/9j/4AAQSkZJRgABAgA...2Q=='*/
    dbms_output.put_line( 'Length of String is ' || length( v_long_text ) ); -- Printing the length of the String assigned to v_long_text.
    INSERT INTO clob_ins_test VALUES ( v_long_text );
END;
/

Length of String is 4100

PL/SQL procedure successfully completed.

SELECT dbms_lob.getlength( clob_column ) Length, clob_column FROM CLOB_INS_TEST;

    LENGTH CLOB_COLUMN                                                                     
---------- --------------------------------------------------------------------------------
    4100 11111111111111111111111111111111111111111111111111111111111111111111111111111111

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...