[pgsql-jp: 33005] functionにてERROR: parser: parse error at or near "$1" と出力されます

Takashi Kikuchi kikuchi @ jix.co.jp
2004年 5月 26日 (水) 19:11:03 JST


はじめまして菊地孝志と申します。
初歩的な質問かと思いますが、いろいろ探し回ったものの解決できないためご教授い
ただければと思います。

あるテーブルに子定数だけレコードを追加するというfunctionを作ろうとしていま
す。
CREATE FUNCTION自体は通過するのですが、実際に使用しようとすると下記のような
エラーが表示されます。

どのあたりに問題があるのでしょうか。
申し訳ありませんが、よろしくお願いいたします。

  test=> SELECT f_zd_insert('00760', '0', '2004/5/26', 1000, 2, 5);
  WARNING:  Error occurred while executing PL/pgSQL function f_zd_insert
  WARNING:  line 11 at SQL statement
  ERROR:  parser: parse error at or near "$1" at character 54


作成したfanctionは下記の通りです。
  CREATE OR REPLACE FUNCTION f_zd_insert (
      varchar(5), varchar(1), date, int, int, int)
  returns int as '
  DECLARE
      box_no int;
      start  int;
      end_no int;
  BEGIN
      start  := $5 + 1;
      end_no := $5 + $6;

      FOR box_no IN start .. end_no LOOP

          INSERT INTO t_zaiko_detail (
              control_no, branch_no, box_no, carry_date, page,
              flg_check, flg_printed, status, consent)
          VALUES (
              $1, $2, trim(to_char(box_no, ''000'')), $3, $4,
              false, false, 0, false);
      END LOOP;
      return true;
  END;
  ' LANGUAGE 'plpgsql';

----
Takashi Kikuchi
kikuchi @ jix.co.jp




pgsql-jp メーリングリストの案内