• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ストアドファンクションのエラーについて)

ストアドファンクションのエラーについて

このQ&Aのポイント
  • PostgreSQLで作成したストアドファンクションがエラーを出力しています。
  • エラーの内容は「value too long for type character varying(5)」です。
  • 原因がわからず困っています。ご教授いただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.1

>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)に入れられない」と怒られたわけです。 代入時にスペースをトリムすれば解決します。 それと、クリア時のダブルクォートが気になりましたが、コンパイルが通っているので、これは問題無いのでしょうね。

j-unico
質問者

お礼

回答ありがとうございます。 知りませんでした。 結果が6桁になるなんて・・・ 大変、勉強になりました。 本当に助かりました、ありがとうございました。

その他の回答 (1)

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.2

1点気になりましたが、複数セッ ションからの同時アクセスに ついての要件はどうなっています でしょうか? これだと同時アクセスの際に、 運が悪ければ同じ連番になって しまいます。 通常はこの手の場合、シーケンス オブジェクトを使用します。 (重複する事なく、カウントアップ できます) 要件的に許されるのであれば、今 の作りでもよいですが、そうで なければ、シーケンスの使用を 検討してください。

関連するQ&A