PostgreSQLのIF THEN ELSEの構文で「ERROR: syntax error at or near “IF” END IF;」

今回はPostgreSQLでIF THEN ELSEを使った場合に、次のようなエラーが出てしまうときの原因と対処法についてお話ししていきます。

PostgreSQLのバージョンは14系です。



PostgreSQLのIF THEN ELSEの構文で「ERROR: syntax error at or near “IF" END IF;」

結論から言うと、私の場合はIF THEN ELSEを使ったSQLの書き方が良くありませんでした。

私は次のようなSQLを最初に組みました。

上記のSQLでやりたいことは、ユーザー「postgres」がいるときは何もせずに、ユーザー「postgres」がいなかったときは「postgres」というユーザーを作成するSQLです。

上記を実行したところ、冒頭でも書きましたが次のようなエラーが出てしまいました。

結論を言うと、PostgreSQLで「IF-THEN-ELSE」の構文を使いたい場合は、次のようにDOやBEGINでくくらなければなりません。

どうやらPostgreSQLのバージョン9系以上なら、上記のような書き方らしいです。
バージョン9より前の場合は上記のような書き方はできず、関数を使う方法しかないようです。

終わりに

今回はPostgreSQLでIF THEN ELSEを使った場合に、冒頭のエラーが出てしまうときの原因と対処法についてお話しいたしました。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

直接契約ができるフリーランスエージェント「エンハンス」を立ち上げました。
詳しくは下記LPをご参照ください。
https://enhance.decryption.co.jp/

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






PostgreSQL

Posted by ちこ