0

我正在尝试从我的表中返回一些结果,但我的查询没有返回任何结果

这是我执行存储过程的方式

EXEC spLog '145',' ','2531'

这是我的存储过程示例,音乐会是一样的,从我的表中返回一些值

Created Procedure spLog
 @logID nvarchar(400),
 @logAction nvarchar(400),
 @userId nvarchar(400)
AS
Begin
DECLARE @query nvarchar(4000)

if(LEN(@logID)>0)
BEGIN
SET @query = @query + 'Select * From LogTable where logID in ('+@logID+') AND userID = '+@userId + ''
END
if (LEN(@logAction)>0)
BEGIN
SET @query = @query + 'Select * From logAction where logAction in ('+@logAction+') AND userID = '+@userId + ''
END

EXEC sp_executesql @query

END

列命名和表命名只是一个例子,忽略它,我的 2 个表由我想要的项目组成,但我的返回结果没有,它应该返回我的东西而不是没有 =(

我的预期结果是 [logTable 结果]+[LogAction 结果] 或 [logTable 结果] 或 [LogAction 结果]

4

1 回答 1

1

您已经声明了@query变量,但从未设置它的初始值 - 因此它NULL位于开头。

DECLARE @query nvarchar(4000)

稍后你将一个字符串连接到你的变量,并且连接NULL + 'something'仍然会成功NULL

SET @query = @query + 'Select * From LogTable where logID in ('+@logID+') AND userID = '+@userId + ''

只需将其替换为

 SET @query = 'Select * From LogTable where logID in ('+@logID+') AND userID = '+@userId + ''

或将您的变量设置为较早的空白字符串:

DECLARE @query nvarchar(4000)
SET @query = ''
于 2013-05-23T07:29:12.767 回答