2014-12-12 3 views
0

У меня есть проблема, я создаю процедуру так:размер по умолчанию для выходного параметра Oracle

CREATE OR REPLACE PROCEDURE TEST_SIZE_OUT 
( 
    MSGTEXT OUT VARCHAR2 
) IS 

BEGIN 

    --The next text has 200 characters 
    MSGTEXT := '10101201212012012012012120121212134541010101011111111110000000010101000000000001111111101111111111111111111111111111111111111000000000000000023401654421524546545gh4g4h4ghdgj5dghj4dgj4j4ghj4ghj1101123m'; 

END TEST_SIZE_OUT; 
/

, но когда я назначить MSGTEXT текст с более 201 символов, и я выполнить эту процедуру, это генерирует эту ошибку:

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

, и я понятия не имею, как это исправить.

+3

Sine 'MSGTEXT' - это параметр out, вызывающий отвечает за его размер. Как это называется? Можете ли вы поделиться полным сценарием? – Mureinik

+0

Я называю это кодом Java. Эта процедура не является вызовом другой процедуры, функции или чего-либо еще. –

+0

@Leonardo Как вы регистрируете выходной параметр при инициализации 'callableStatement' в вашем Java-коде? –

ответ

0

Попробуйте это в окне запроса или просто с SQPLus:

declare 

msg varchar(300) ; 

begin 

    test_size_out(msg); 

end; 

Если я не ошибаюсь, это будет прекрасно работать с 250 символов в строке, но не 301.

Вы также можете для префикса ваших хранимых процедур с помощью SP, функций с F-пакетами с PKG и т. д.

+0

Да, в этом блоке это работает, потому что в этом блоке вызывающий объект SP определяет размер выходного параметра, но мне нужно знать, есть ли способ доказать это, не делая этого. Я думаю, что это проблема клиента, я использую sqqldeveloper для выполнения этой процедуры, но в другом, как разработчик pl-sql, он работает. –

+0

Итак, в SQL Developer, когда вы выполняете SP, он устанавливает для вас небольшую среду выполнения. Если вы посмотрите ВЫШЕ, где вы устанавливаете значения, вы увидите объявленный varchar. – FlyingGuy

+0

Да, я нашел, как изменяется размер по умолчанию для sqldeveloper. Но я не знаю, имеет ли Oracle размер по умолчанию или просто sqldeveloper. Я отправил его на тест, и я жду ответа. –

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