SQL-传递存储where子句的变量

时间:2018-07-16 12:38:40

标签: sql variables amazon-redshift where-clause

我正在尝试构建一个SQL查询,该查询传递一个存储where子句的变量。反过来,我打算在SQL查询中调用此变量。

下面是我要做的事情:

DECLARE @temp int(20)
SET @temp  = '''select emp_id from employees'''

我在其中使用的SQL查询调用该变量:

select emp.emp_id
      ,emp.name
      ,team.team_name 
from employees emp 
join team team on emp.team_id=team.id and emp.id in (@temp)

在尝试上述操作时,我一直在获取语法错误,有人可以在上述代码中指导我哪里出错了。谢谢。

1 个答案:

答案 0 :(得分:1)

您会在那里找到Ids的列表,因此将其保存为标准int变量将不起作用。你也不能那样做

类似的事情会起作用

创建用户定义的类型表

InkWell

在用户定义的类型表中插入您的雇主ID

CREATE TYPE [dbo].[IntList] AS TABLE(
  [Id] [int] NOT NULL
)

现在在您的IN子句中对该表进行选择

DECLARE @EmpIDs IntList;
INSERT INTO @EmpIDs SELECT emp_id FROM EMPLOYEES