gpt4 book ai didi

sql - 将 Null 值参数传递给动态 SQL 查询。怎么才能成功执行呢?

转载 作者:行者123 更新时间:2023-12-02 12:19:19 25 4
gpt4 key购买 nike

我正在执行动态 SQL 查询。其中参数是动态传递的。我首先编写了类似于以下代码。

DECLARE @Id nvarchar(max);
DECLARE @query nvarchar(max);
SET @Id ='RMH_108'
SET @query ='Select *
FROM [A06].[Syn_RMDemand]
WHERE RMHierarchyId =' + @Id
PRINT @query
EXEC(@query)

Error

然后我写了这个。

DECLARE @Id nvarchar(max);
DECLARE @query nvarchar(max);
SET @Id ='RMH_108'
SET @query ='Select *
FROM [A06].[Syn_RMDemand]
WHERE RMHierarchyId = '''+@Id+''''
PRINT @query
EXEC(@query)

ERROR

这次代码成功执行。由于参数可以为空,我需要将其转换为空。我修改了代码并写了这个

DECLARE @Id nvarchar(max);
DECLARE @query nvarchar(max);
SET @Id = ''
SET @Id = NULLIF(@Id,'')
-- COMMENTED SET @Id ='RMH_108'

SET @query ='Select * FROM [A06].[Syn_RMDemand]
WHERE RMHierarchyId = '''+@Id+''''
PRINT @query
EXEC(@query)

Error

没有错误。查询崩溃。
有人遇到过这样的问题吗?

最佳答案

您应该使用sp_executeSQL并像这样删除字符串连接。我假设如果传递 NULL,您希望返回所有行。

查询

DECLARE @Id nvarchar(max);
DECLARE @query nvarchar(max);
SET @Id ='RMH_108'SET @query ='Select *
FROM [A06].[Syn_RMDemand]
WHERE RMHierarchyId = @Id OR @ID IS NULL'
PRINT @query
EXEC sp_executeSQL @query,N'@Id NVARCHAR(MAX)',@Id

关于sql - 将 Null 值参数传递给动态 SQL 查询。怎么才能成功执行呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31018906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com