• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PL/pgSQL 引数の数)

PL/pgSQL 引数の数に制限がありますか?

このQ&Aのポイント
  • PL/pgSQL を使用して更新処理を行いたいですが、パラメータの数が多すぎるためエラーが発生しています。
  • 可変長引数を使用すると、データベースには定義できますが、実行時に同様のエラーが発生します。
  • PL/pgSQL の引数の数を制限する設定や対策があれば教えてください。

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

  • ベストアンサー
  • yamada59
  • ベストアンサー率74% (29/39)
回答No.1

100 以上の引数をもった関数を定義できるようにするには、ソースコードを修正してコンパイルしなおす必要があります。 ヘッダファイル src/include/pg_config_manual.h 内の定数 FUNC_MAX_ARGS を修正してください。ソースコードのコメントには約 600 まで増やせるということです。 100 以上の引数をもつ関数を定義すること自体、設計に何らかの問題がありそうなので、そちらを見なおしたほうがよいと思います。 あるいは、引数を配列や複合型で渡すことを考えたほうがいいかもしれません。

kozax05
質問者

お礼

回答ありがとうございます。 ご指摘の通りファンクションの設計に問題があると思います。 MySqlよりコンバートしているのですが、トランザクションの各カラムをすべてファンクションに送り、ファンクション内で各テーブルの更新及びトランザクションの追加処理を行っているため今回ご質問させて頂いた現象が発生してしまいました。 トランザクションの追加処理はPHP側で行いトリガで各テーブルの更新ファンクションをコールする形に修正しようと思います。

関連するQ&A