1. ホーム
  2. sql

[解決済み] PostgreSQLのクエリで変数を宣言する方法

2022-03-15 22:22:20

質問

PostgreSQL 8.3 の問い合わせで使用するために、どのように変数を宣言すればよいですか?

MS SQL Serverでは、こんなことができるんです。

DECLARE @myvar INT
SET @myvar = 5

SELECT *
FROM somewhere
WHERE something = @myvar

PostgreSQLで同じことをするにはどうしたらよいでしょうか?ドキュメントによると、変数は単に "名前型;" として宣言されますが、これは私に構文エラーを与えます。

myvar INTEGER;

どなたか、正しい構文の例を教えてください。

どのように解決するのですか?

PostgreSQLにはそのような機能はありません。pl/PgSQL (または他の pl/*) でのみ可能であり、普通の SQL ではできません。

例外は WITH () クエリの変数として動作させることもできますし、あるいは tuple 変数の 一時的な値のテーブルを返すことができます。

WITH master_user AS (
    SELECT
      login,
      registration_date
    FROM users
    WHERE ...
)

SELECT *
FROM users
WHERE master_login = (SELECT login
                      FROM master_user)
      AND (SELECT registration_date
           FROM master_user) > ...;