sqlserver动态sql与变量绑定

--变量声明
DECLARE @TMG DATETIME
DECLARE @STR NVARCHAR(500) --记住必须定义为NVARCHAR,否则会报错‘SQL存储过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'’
DECLARE @ZD VARCHAR(20)

--主体部分
BEGIN
    SET @ZD = 'XXX';
    --拼装sql语句
    SET @STR = 'SELECT @TMGOUT = T.TM FROM (SELECT R.TM,ROW_NUMBER() OVER (ORDER BY R.TM DESC)RN FROM DSE_BZ_RUNSTATE_R R WHERE R.STCD = ' +@STCDS + ' AND R.' + @ZD + ' = ''0'' ) T WHERE T.RN = 1 ;';
  
    --执行sql语句
    exec sp_executesql @STR,N'@TMGOUT DATETIME output',@TMG output;
   
    --使用@TMG变量
     SELECT * FROM XXX T WHERE T.XX>@TMG;
END

你可能感兴趣的:(sql)