sql - 繰り返し - "IF"またはその近くのPostgres構文エラー



sql 変数 postgres (1)

私はポストグルには新しく、私は私の仕事に取り組んでいます。 私はわずか1列のテーブルを作成しなければなりませんでした。そして、pgadmin IIIで実行するようにこの文が与えられました:

BEGIN;
INSERT INTO mytable VALUES (1);
SAVEPOINT savepoint1;
INSERT INTO mytable VALUES (2);
ROLLBACK TO SAVEPOINT savepoint1;
INSERT INTO mytable VALUES (3);
SAVEPOINT savepoint2;
INSERT INTO mytable VALUES (4);
INSERT INTO mytable VALUES (5);
SAVEPOINT savepoint3;
SELECT * FROM mytable;
--NOTE: You need to run this IF statement as PGScript 
--(button next to the normal run button)
IF (CAST ((SELECT MAX(id) FROM mytable) AS INTEGER) = 4)
BEGIN
      RELEASE SAVEPOINT savepoint2;
END
ELSE
BEGIN
      INSERT INTO mytable VALUES(6);
END
--Run the next steps normally
SAVEPOINT savepoint2;
INSERT INTO mytable VALUES (7);
RELEASE SAVEPOINT savepoint2;
INSERT INTO mytable VALUES (8);
ROLLBACK TO savepoint2;
COMMIT;

私はこれを実行すると、私はこのエラーが発生します: "IF"

私はすでにこの38.6.2を見てきました 条件38.6.2。 Conditionals 、私はこれを非常によく理解していない、私はクエリを変更する必要がありますか

IF (CAST ((SELECT MAX(id) FROM mytable) AS INTEGER) = 4) THEN 
BEGiN 

それが終わると私はそれを終わらせなければなりません:

END IF

なぜすべての後にエラーがありますか?


IFとその他のPL / pgSQL機能は、PL / pgSQL関数内でのみ使用できます。 IFを使用する場合は、コードを関数にラップする必要があります。 9.0 +を使用している場合は、 DOを使用してインライン関数を記述できます。

do $$
begin
  -- code goes here
end
$$

以前のバージョンのPostgreSQLを使用している場合は、コードを含む名前付き関数を記述し、その関数を実行する必要があります。





if-statement