5

関数ではなくpostgresで変数を宣言したい...

Declare
    c varchar;
    a integer;
    b integer;

    select b = count (*) from table

    set a = 1
        while a <= b  
begin 

    select c = [c] from table where id = a

    if (c = '1')
        insert into table2 select(*) from table

end


set a = a+1

エラー エラー: "varchar" またはその近くで構文エラーが発生しました LINE 2: c varchar; ^ どなたか助けていただければ幸いです

4

1 に答える 1

13

9.0を使用している場合は、DOステートメントを使用して匿名ブロックを使用できます。

http://www.postgresql.org/docs/current/static/sql-do.html

9.0より前では、匿名のpl / pgSQLブロックを使用できません。そのために、関数を作成する必要があります。

さらに、pl/pgSQLの構文が完全に間違っています。

割り当てとWHILEステートメントを同じ行に含めることはできません。WHILEループの他のrequirdキーワードもありません。

正しい構文については、マニュアルを参照してください。

http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#AEN50163

選択から変数に値を読み取るための構文も間違っています。

SELECTの結果を取得するための正しい構文は次のとおりです。

SELECT count(*) 
  INTO b
FROM some_table;

これについてもマニュアルをチェックしてください:

http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW

于 2011-03-28T09:00:15.343 に答える