Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ХП OUT параметры.  [new]
slavik_msc
Member

Откуда:
Сообщений: 353
Вопрос есть хранимая процедура с выходным параметром VARCHAR2. В нее помещается большой объем данных и очень часто выпадает ошибка ORA-06502: PL/SQL: numeric or value error string.
Если запустить скриптом:
DECLARE
str varchar2(20000); --выходной параметр
begin
имя_хп(входные параметры, str);
end;

то все работает прекрасно. в ХП можно как нибудь изменить размерность? Или есть другие пути решения проблемы?
Заранее благодарен!
13 июн 14, 13:36    [16161050]     Ответить | Цитировать Сообщить модератору
 Re: ХП OUT параметры.  [new]
Elic
Member

Откуда:
Сообщений: 29976
slavik_msc
Или есть другие пути решения проблемы?
Выделять достаточно места для приёма выходного параметра при вызове процедуры.
13 июн 14, 14:31    [16161198]     Ответить | Цитировать Сообщить модератору
 Re: ХП OUT параметры.  [new]
slavik_msc
Member

Откуда:
Сообщений: 353
а до вызова процедуры в самой процедуре как то можно сделать?
13 июн 14, 16:32    [16161475]     Ответить | Цитировать Сообщить модератору
 Re: ХП OUT параметры.  [new]
Elic
Member

Откуда:
Сообщений: 29976
slavik_msc
а до вызова процедуры в самой процедуре как то можно сделать?
Уменьшить объём возвращаемых данных.
RTFM
13 июн 14, 16:45    [16161522]     Ответить | Цитировать Сообщить модератору
 Re: ХП OUT параметры.  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
slavik_msc
а до вызова процедуры в самой процедуре как то можно сделать?
Ты, конечно, можешь сделать более четкую спецификацию, но это не породит исключения, если "принимающая переменная" достаточной длины.
SQL> create or replace package pkg as
  2
  3    subtype my_type is varchar2(3);
  4
  5  end;
  6  /

Package created.

SQL>
SQL> create or replace procedure p(x in varchar2, str out pkg.my_type) as
  2  begin
  3    str := 'Hello ' || x;
  4  end;
  5  /

Procedure created.

SQL>
SQL> declare
  2    result varchar2(100);
  3  begin
  4    p('Roger',result);
  5    dbms_output.put_line(result);
  6  end;
  7  /
Hello Roger

PL/SQL procedure successfully completed.

SQL>
SQL> declare
  2    result pkg.my_type;
  3  begin
  4    p('Roger',result);
  5  end;
  6  /
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "HR.P", line 3
ORA-06512: at line 4
SQL> select argument_name
  2        ,data_type
  3        ,data_length
  4    from user_arguments
  5   where object_name = 'P';

ARGUMENT_NAME   DATA_TYPE       DATA_LENGTH
--------------- --------------- -----------
X               VARCHAR2
STR             VARCHAR2                  3
16 июн 14, 18:10    [16171388]     Ответить | Цитировать Сообщить модератору
 Re: ХП OUT параметры.  [new]
Elic
Member

Откуда:
Сообщений: 29976
dbms_photoshop
Ты, конечно, можешь сделать более четкую спецификацию, но это
Самообман.
17 июн 14, 10:01    [16173678]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить