declare @sql nvarchar(200) ,@sql_1 nvarchar(200) ,
@params  int,
@q int
;
SET @sql =' SET @p = 10'EXEC  sp_executesql @sql_1,@sql
select @sql报错:
消息 102,级别 15,状态 1,第 9 行
' ' 附近有语法错误。

解决方案 »

  1.   

    EXEC sp_executesql 语句字符串,变量声明lz是不是写反了?
      

  2.   


    --是不是想对@p赋值?
    declare @sql nvarchar(200) 
            ,@sql_1 nvarchar(200)
            ,@params int
            ,@p int;set @p = 10;
    select @p/*
    --结果
    10
    */
      

  3.   

    declare @sql nvarchar(200) ,@sql_1 nvarchar(200) ,
    @params int,
    @p intSET @sql =' SET @p = 10'
    EXEC sp_executesql @sql,N'@p int output',@p  output
    select @p
    -----------
    10(1 行受影响)
    这个意思吗。
      

  4.   

    变量一个一个PRINT出来看下,很快就能发现问题了.我估计有个地方使用了全角状态下的空格.
      

  5.   

    你把红色标记的部分改成 set @sql='set '+cast(@q as nvarchar(12))+'=10'
    试一下