请问如何在PostgreSQL查询中声明变量

如何在PostgreSQL查询中声明变量

如何声明变量以便在PostgreSQL 8.3查询中使用?

在MSSQLServer中,我可以这样做:

DECLARE @myvar INTSET @myvar = 5SELECT *FROM somewhereWHERE something = @myvar

如何在PostgreSQL中实现相同的操作?根据文档,变量被简单地声明为“name type;”,但是这给了我一个语法错误:

myvar INTEGER;

有人能给我举个正确语法的例子吗?


慕田峪7331174
浏览 484回答 3
3回答

Qyouu

PostgreSQL中没有这样的特性。只能在pl/PgSQL(或其他pl/*)中执行,但不能在普通SQL中执行。例外是WITH ()可以作为变量工作的查询,甚至可以用作变量的查询。tuple变量。它允许您返回一个临时值表。WITH master_user AS (     SELECT       login,       registration_date    FROM users    WHERE ...)SELECT *FROM usersWHERE master_login = (SELECT login                             FROM master_user)       AND (SELECT registration_date           FROM master_user) > ...;

holdtom

通过使用WITH条款,它一点也不雅致,但也能做到同样的事情。不过,对于这个例子来说,这确实是过火了。我也不特别推荐这个。WITH myconstants (var1, var2) as (    values (5, 'foo'))SELECT *FROM somewhere, myconstantsWHERE something = var1   OR something_else = var2;

慕桂英4014372

您也可以在PLPGSQL中尝试这样做:DO $$DECLARE myvar integer;BEGIN     SELECT 5 INTO myvar;     DROP TABLE IF EXISTS tmp_table;     CREATE TABLE tmp_table AS     SELECT * FROM yourtable WHERE   id = myvar;END $$;SELECT * FROM tmp_table;以上要求Postgres 9.0或更高版本。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL