Sql 动态查询返回零值

Sql 动态查询返回零值,sql,stored-procedures,sql-server-2008-r2,Sql,Stored Procedures,Sql Server 2008 R2,我试图从我的表中返回一些结果,但我的查询没有返回任何结果 下面是我执行存储过程的方式 EXEC spLog '145',' ','2531' 这是我的存储过程示例,concert是相同的,从表中返回一些值 Created Procedure spLog @logID nvarchar(400), @logAction nvarchar(400), @userId nvarchar(400) AS Begin DECLARE @query nvarchar(4000) if(LEN(@l

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

下面是我执行存储过程的方式

EXEC spLog '145',' ','2531'
这是我的存储过程示例,concert是相同的,从表中返回一些值

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,它应该返回一些东西,而不是none=(


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

您声明了
@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 = ''

试着用
logID='+@logID+'
替换('+@logID+')中的
logID='+@logID+'
@AndreyGordeev我的参数格式将是逗号=)例如'145156'你是对的,但我想使用2个查询,我不能只运行一个查询。我只是尝试一下,它不起作用,当logID和logaction存在时,我的logaction结果将替换logid结果,我的预期结果是logid+logaction只需在开始时使用
SET@query='
,并在IFS中保留
SET@query=@query+'选择…'
并确保在两个查询之间添加空格,或者更好的做法是在两个查询的末尾添加分号+;'