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側?で桁数定義などをする方法はあるのでしょうか?