Skip to Main Content

Japanese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

ORA-06502 文字列バッファが小さすぎます。

894733Oct 31 2011 — edited Nov 3 2011
現在、JAVAからspringframeworkを用いてOracleストアドファンクションを呼び出す処理を作成しておりますが、
ファンクションの引数の桁数問題にて、「ORA-06502: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます。が発生しました」が発生しています。
対応策が分からず、悪戦苦闘しており、解決方法を知っていらっしゃる人がいましたらご教示ください。

該当のFUNCTION定義(抜粋)
-------------------------------------
FUNCTION FUNCH_CRE_TEST(
i_name IN VARCHAR2, -- 名
o_tbl_name OUT NOCOPY VARCHAR2, -- テーブル名
o_errmsg OUT NOCOPY VARCHAR2) -- エラーメッセージ
RETURN NUMBER -- エラーコード
IS
retcode NUMBER := 0;
table_id VARCHAR2(10);
ora_msg VARCHAR2(1000);
BEGIN
o_tbl_name := '';
SELECT LPAD(SEQ_TEST.NEXTVAL,10,'0') INTO table_id FROM dual;
o_tbl_name := UPPER(i_name) || '_' || table_id;
RETURN retcode;
EXCEPTION
WHEN OTHERS
THEN
retcode := SQLCODE;
o_errmsg := SQLERRM;
RETURN retcode;
END FUNCH_CRE_TEST;

END TEST;
-------------------------------------

「i_name」を元に、シーケンスで取得した値を付けた値を戻す処理なのですが、
「o_tbl_name := UPPER(i_name) || '_' || table_id;」の行にて、
「ORA-06502: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます。が発生しました」が発生します。
引数を変えて桁数を確認したところ、o_tbl_nameには、2ケタの値までしか入れられず、3ケタ以上の値は同様のエラーとなりました。
o_tbl_nameの桁数の定義はファンクション側ではしていないのですが、
FUNCTION側?またはOracle側?で桁数定義などをする方法はあるのでしょうか?
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 1 2011
Added on Oct 31 2011
5 comments
44,434 views