2

「キー」変数を引数として持つ関数があります。

キー値の範囲に対してこの関数を呼び出したいと思います。

私はこれを試しましたが、うまくいきませんでした...

BEGIN
for i IN 773..775 LOOP
  test_count(i);
end LOOP;
end;

SQL エラー: エラー: "for" またはその近くで構文エラーが発生しました 行 2: for i IN 773..775 LOOP

4

3 に答える 3

2

@Mihai は、関数または無名コード ブロックの外部で手続き型要素を実行できないことをDO.

戻り値を処理せずにどこでも関数を呼び出すことはできないため、構文は依然として失敗します。可能な戻り値を破棄したい場合は、次PERFORMのような関数で使用します (PostgreSQL 8.3 で動作します):

関数 foo() の作成または置換
  戻り値 void LANGUAGE plpgsql AS
$本文$
始める

私は 773 .. 775 で
ループ
   PERFORM test_count(i);
エンドループ;

終わり;
$BODY$;
于 2012-06-22T23:25:54.547 に答える
0

PostgreSQL 8.3は、匿名のプロシージャ/関数を実行したり、プロシージャ/関数の外部で変数を作成したりすることはできません。

DO構成は、バージョンの時点で匿名プロシージャのサポートとして追加されました9.0

関数内でコードを実行する必要があります。FOR受信しているエラーメッセージは、グローバルコンテキストでは予期しないキーワードであると述べているためです。

于 2012-06-22T21:38:34.617 に答える