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

If we got this Oracle error
ORA-06502: PL/SQL: numeric or value error: character string buffer too small

Just change you code accordingly the next pattern. From

oCom.Parameters.Add(“o_name”, OracleDbType.Varchar2, ParameterDirection.Output);

to

oCom.Parameters.Add(“o_name”, OracleDbType.Varchar2, 300, null, ParameterDirection.Output);

Where 300 is any size of your parameter.

tl;dr;

В моем случае это связано с тем, что функция или процедура Oracle имеет возвращаемый парампетр Varchar2
и я использую ODP.NET и следующий код устанавливающий параметр на стороне ADO.NET (т.е. на стороне .NET Framework приложения):

oCom.Parameters.Add(“o_name”, OracleDbType.Varchar2, ParameterDirection.Output);

Неправильно, сказала Oracle всем :), надо использовать следующее извращение, сказала Оракля:

oCom.Parameters.Add(“o_name”, OracleDbType.Varchar2, 300, null, ParameterDirection.Output);

Здесь 300 – это размерность. Любая, но не меньше, чем вы ожидаете.
null – ну типа как изначальное значени.

Уже стотый раз спотыкаюсь на этом, но постоянно забываю об этой несуразности.

С облегчением :) !

Advertisements

About Ilya Tretyakov, it3xl

Just Google it3xl
This entry was posted in common and tagged . Bookmark the permalink.

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

  1. Pingback: ODP.NET: Тонкости биндинга переменных. | Il'ya Tretyakov's Dev Diary (аka i!t, aka it3xl.ru).

  2. Shayne says:

    I am really grateful to the owner of this website who has
    shared this impressive article at at this time.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s