- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ストアドファンクションのエラーについて)
ストアドファンクションのエラーについて
このQ&Aのポイント
- PostgreSQLで作成したストアドファンクションがエラーを出力しています。
- エラーの内容は「value too long for type character varying(5)」です。
- 原因がわからず困っています。ご教授いただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>ERROR: value too long for type character varying(5) >CONTEXT: PL/pgSQL function"getrenban" line 19 at SQL statement line 19と言う事は code5 := ''''; SELECT TO_CHAR(renban, ''00000'') INTO code5; ↑ この辺ですよね。 で、「長過ぎてvarchar(5)に入れられない」と怒られています。 PL/pgSQLは実務で使った事がないのですが、オラクルのPL/SQLの観点で回答します。 5桁の数字が入ったintegerの変数をTO_CHARすると結果は6桁になります。 +-が一桁付加されるからです。 (正の場合は半角スペース) なので「長過ぎてvarchar(5)に入れられない」と怒られたわけです。 代入時にスペースをトリムすれば解決します。 それと、クリア時のダブルクォートが気になりましたが、コンパイルが通っているので、これは問題無いのでしょうね。
その他の回答 (1)
- utakataXEX
- ベストアンサー率69% (711/1018)
回答No.2
1点気になりましたが、複数セッ ションからの同時アクセスに ついての要件はどうなっています でしょうか? これだと同時アクセスの際に、 運が悪ければ同じ連番になって しまいます。 通常はこの手の場合、シーケンス オブジェクトを使用します。 (重複する事なく、カウントアップ できます) 要件的に許されるのであれば、今 の作りでもよいですが、そうで なければ、シーケンスの使用を 検討してください。
お礼
回答ありがとうございます。 知りませんでした。 結果が6桁になるなんて・・・ 大変、勉強になりました。 本当に助かりました、ありがとうございました。