如何声明用于PostgreSQL 8.3查询的变量?

在MS SQL Server中,我可以执行以下操作:

DECLARE @myvar INT
SET @myvar = 5

SELECT *
FROM somewhere
WHERE something = @myvar

如何在PostgreSQL中实现同样的功能?根据文档,变量被简单地声明为"name type;",但这给了我一个语法错误:

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) > ...;

Sql相关问答推荐

如何用3个(半)固定位置建模团队,并有效地搜索相同/不同的团队?

有没有办法在每次计算每一行的数据时更新2个值?

了解放置时的连接

值对于类型字符来说太长

获得第三名或最老的记录

将JSON文件导入Postgres 16数据库时出错(22P04上次预期列之后的额外数据)

按属性值 Select 数组元素Postgres Jsonb

违反了完整性约束-值存在时找不到父键

无法访问级联删除导致的触发器中已删除的外键记录

Select 组中的第一行,但在并发环境中

将 json 列键映射到第二个表中的匹配列值

使用多个数据库调用重载 CQRS 模式

SQL SUM Filter逻辑解释

递归 CTE 附加为行

基于变量的条件 WHERE 子句

使用 SQL 计算一年中任意 3 个月期间的总成本

在where语句中使用CTE非常缓慢

达到特定值时,从0开始累加求和

Oracle PL/SQL长期运行问题

超过100名员工的连续行