我正在尝试构建一个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)
在尝试上述操作时,我一直在获取语法错误,有人可以在上述代码中指导我哪里出错了。谢谢。
答案 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