日期:2014-05-17  浏览次数:20480 次

sp_executesql问题,求帮忙(在线等,给分)
本帖最后由 yo_you920821 于 2013-11-28 16:03:05 编辑
exec sp_executesql N'SELECT A.* FROM (SELECT *,ROW_NUMBER() over (ORDER BY Id DESC) as ROWNUM FROM (
            SELECT * FROM App_Attachment_TD T1 WHERE 0=0 AND T1.ID IN @IDS  AND 0=0 AND 0=0
          ) B) A WHERE ROWNUM BETWEEN @ROWSTART AND @ROWEND',N'@IDS nvarchar(10),@ROWSTART int,@ROWEND int',@IDS=N'(24,25)',@ROWSTART=1,@ROWEND=2147483647


总是报“消息 102,级别 15,状态 1,第 2 行Incorrect syntax near '@IDS'.”的错误,找不到原因。。帮帮忙吧各位
SQL

------解决方案--------------------
try this,

exec sp_executesql N'SELECT A.* FROM (SELECT *,ROW_NUMBER() over (ORDER BY Id DESC) as ROWNUM FROM (
            SELECT * FROM App_Attachment_TD T1 WHERE 0=0 AND T1.ID IN '+@IDS+' AND 0=0 AND 0=0
          ) B) A WHERE ROWNUM BETWEEN @ROWSTART AND @ROWEND',
          N'@IDS nvarchar(20),@ROWSTART int,@ROWEND int',@IDS=N'(24,25)',@ROWSTART=1,@ROWEND=2147483647

------解决方案--------------------
改成这样试试:
exec sp_executesql N'SELECT A.* FROM (SELECT *,ROW_NUMBER() over (ORDER BY Id DESC) as ROWNUM FROM (
            SELECT * FROM App_Attachment_TD T1 WHERE 0=0 AND charindex('',''+cast(T1.ID as varchar)+'','', '',''+@IDS+'','')  AND 0=0 AND 0=0
          ) B) A WHERE ROWNUM BETWEEN @ROWSTART AND @ROWEND',N'@IDS nvarchar(10),@ROWSTART int,@ROWEND int',@IDS=N'''24'',''25''',@ROWSTART=1,@ROWEND=2147483647