2017-01-21 2 views
1

Я получаю числовую или значение ошибки, когда я пытаюсь сделать следующее. Я пытаюсь назначить строку длины 40000 переменной clob, она должна позволить мне правильно?Числовая или значение ошибки при назначении строки более чем 32K переменной clob

Я петля, если пытаюсь добавить куски строки, тогда нет проблемы, но если я попытаюсь назначить «более 32-килобайтную строку» за один раз, появится ошибка.

У меня есть требование, когда мне нужно назначить строку 32K + процедуре с входным параметром clob.

SET SERVEROUTPUT ON 

DECLARE 

my_var CLOB; 

BEGIN 

my_var:=RPAD('*',40000,'*'); 

DBMS_OUTPUT.PUt_LINE(length(my_var)); 

EXCEPTION 
WHEN OTHERS THEN 
DBMS_OUTPUT.PUt_LINE(SQLCODE||' '||SQLERRM); 

END; 

Ошибка:

-6502 ORA-06502: PL/SQL: numeric or value error: character string buffer too small

ответ

2

Поместите себя в шкуре/SQL выполнения PL. Он должен обрабатывать уступка

my_var := rpad('*', 40000, '*') 

Правда, my_var был объявлен clob. Как насчет RHS? Сначала RHS должен быть оценен, и, когда это выполняется во время выполнения, он не знает, как ожидается результат clob. Первый аргумент - '*', который составляет varchar2, а не clob. Ожидается, что доход от rpad составит varchar2. Вот почему вы получаете ошибку.

Как это исправить? Без труда. Вы должны дать функцию clob в качестве первого аргумента. Как так:

my_var := rpad(to_clob('*'), 40000, '*') 

Демо:

SQL> declare x clob; begin x := rpad(to_clob('*'), 40000, '*'); 
    2 dbms_output.put_line(length(x)); end; 
    3/

40000 

PL/SQL procedure successfully completed. 

Успехов!

+0

Я никогда не знал, что это может сработать :) +1 – GurV

+0

Привет, Спасибо за ответ. У меня есть одна процедура, которая записывает в clob-столбец с clob в качестве входного параметра. Поскольку существует предел 32K для строк в plsql. Сценарий оболочки Unix будет вызывать эту процедуру через sqllpus и указать строковый параметр, который может быть «более 32K». Подобно назначению этой большой строки в переменную clob, а затем передать эту переменную clob в процедуру. Является ли это возможным?? Пожалуйста помоги. – Srikant

 Смежные вопросы

  • Нет связанных вопросов^_^