jdbcインタフェースからOracleストアドプロシージャを呼び出す必要があります。javaからplsqlへの単一文字列varchar2(1)により '文字列バッファが小さすぎます'
TYPE cust_account_rec_type IS RECORD (
... , status VARCHAR2(1), ...);
マイJDBCクエリ文字列は、レコード型変数を宣言し、右側は、クエリパラメータであるステータスフィールドに値を代入:手順はVARCHAR(2)フィールドを含むレコードタイプパラメータを取ります。その後、プロシージャを呼び出します。私はこの単一文字のvarchar型に整列する
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
メッセージ・ポイントを得た)callableStatement.execute(後
callableStatement.setString("IN_insert_status", "I");
// callableStatement is type of java.sql.CallableStatement
:
p_cust_account_rec.status := :IN_insert_status;
someprocedure(p_cust_account_rec);
のJavaクエリ呼び出しがIN_insert_statusパラメータの値を設定します変数。しかし、ハードコード値がSQLクエリ文字列の場合:
p_cust_account_rec.status := 'I';
となります。
Javaで単一文字列を渡すときに何が問題になるのですか?何が欠けていますか?
データベースを変更することは禁止されています。それは外部データベースであり、その観点からは、私にとっては「読み取り専用」です。 – Invader92
ここを見て、同じ問題かもしれない、http://stackoverflow.com/questions/17598969/character-string-buffer-too-small-error-in-oracle-stored-procedure –