当前位置: 首页 > 面试题库 >

如何在PostgreSQL查询中声明变量

葛雨华
2023-03-14
问题内容

如何声明用于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) > ...;


 类似资料:
  • 我试图在OpenAPI 3中定义一个查询对象: 但示例值和架构未显示在 Swaager UI 中。 是有错误还是我错过了什么?

  • 问题内容: 如何在mysql中声明变量,以便第二个查询可以使用它? 我想写一些像: 问题答案: MySQL中主要有三种类型的变量: 用户定义的变量 (以开头): 您可以访问任何用户定义的变量,而无需对其进行声明或初始化。如果引用的变量尚未初始化,则其值为和字符串类型。 您可以使用或语句来初始化变量: 要么 可以从一组有限的数据类型中为用户变量分配一个值:整数,十进制,浮点数,二进制或非二进制字符串

  • 问题内容: 我有一个Netezza查询,在其中我引用了一系列案例陈述中的几个日期。而不是每次我都想在开始时将一个变量置为一个变量并在整个查询中都使用它时,而不是替换所有这些日期。在SAS中,我会这样做: 问题答案: 不幸的是,Netezza中没有程序SQL扩展,您无法将这样的变量用作SQL语言本身的一部分。纯粹的SQL解决方案将涉及一些麻烦,例如加入CTE并返回该值。但是,NZSQL CLI确实允

  • 问题内容: 我想知道在MS SQL Server 2005中是否有办法做到这一点: 这可能吗? 问题答案: 有可能,但是需要使用动态SQL。 我建议先阅读动态SQL的诅咒和祝福,然后再继续… 动态SQL只是一条SQL语句,在执行前由字符串组成。因此,通常的字符串连接发生。每当您想以不允许的SQL语法执行某些操作时,都需要使用动态SQL,例如: 单个参数表示IN子句的逗号分隔值列表 一个既代表值又代

  • 问题内容: 如何在JavaScript中声明全局变量? 问题答案: 如果必须在生产代码中生成全局变量(应避免使用),请 始终 明确 声明它们: 虽然可以通过省略来定义全局变量(假设没有同名的局部变量),但这样做会生成 隐式 全局,这是一件不好的事情,并且在 严格模式下 会产生错误。

  • 我在typescript中声明了一个全局变量,类似于:global。test=“something”我尝试这样做,我得到错误属性“test”在类型“Global”上不存在。