我试图从我的表中返回一些结果,但我的查询返回无结果
这是我如何执行我的存储过程
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表包含我想要的项目,但我的返回结果是none,它应该返回一些东西而不是没有=(
我的预期结果是[logTable结果] + [LogAction结果]或[logTable结果]或[LogAction结果]
答案 0 :(得分: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 = ''