@s这样写没问题:
select @s=count(学号) from manage_student_info where  姓名=@content@s这样写就有问题,请修改一下以下语句:
exec('declare @s Int;select @s=count(学号) from manage_student_info where  '+@tag+'='''+@content+'''')

解决方案 »

  1.   

    declare @s int,@sql nvarchar(4000)set @sql=N'select @s=count(学号) from manage_student_info where  '+@tag+'='''+@content+''''exec sp_executesql @sql,N'@s int output',@s outputselect @s
      

  2.   

    用sp_executesql 执行动态语句  如3楼钻钻的
      

  3.   

    ec('declare @s Int;select @s=count(学号) from manage_student_info where  '+@tag+'='+''''+@content+'''')
      

  4.   

    EXEC ('DECLARE @S INT,@NUM INT ;SET @NUM=2;SELECT @S=COUNT(*) FROM NUM WHERE NUM=@NUM ;SELECT @S')
      

  5.   


    declare @tag varchar(16),@content varchar(8)
    select @tag='Area_id';
    select @content='11000000';
    exec('declare @s Int;select @s=count(*) from Areas where  '+@tag+'='''+@content+''';print cast(@s as varchar(16))')
    我做的测试
      

  6.   

    DECLARE @NUM INT ;
    DECLARE @NAME VARCHAR(10);
    SET @NAME='NUM';
    SET @NUM=2;
    EXEC('
    DECLARE @S INT;SELECT @S=COUNT(*) FROM NUM WHERE '+@NAME+'='+@NUM+';
    SELECT @S')
      

  7.   

    EXEC('
    DECLARE @NUM INT ;
    DECLARE @NAME VARCHAR(10);
    SET @NAME=''NUM'';
    SET @NUM=2;
    DECLARE @SQL VARCHAR(1000);
    SET @SQL=''DECLARE @S INT;SELECT @S=COUNT(*) FROM NUM WHERE ''+@NAME+''=''+LTRIM(@NUM)+'';SELECT @S;'';EXEC(@SQL)')
    全动态SQL语句,加变量声明
      

  8.   

    感谢各位,严格按照(子陌红尘[I'm 潇湘]) 老大的语句,只是把他们放在一句里面,可以测试出现错误,错误的信息为:
    变量名 '@s' 已声明。变量名在批查询或存储过程内部必须唯一。
    必须声明变量 '@sql'。
    必须声明变量 '@sql'。
    语句如下:
    SqlCommand comm0 = new SqlCommand("declare @s int;@sql nvarchar(4000);set @sql=N'select @s=count(学号) from manage_student_info where  '+@tag+'='''+@content+'''';exec sp_executesql @sql,N'@s int output',@s output;select @s", conn);
      

  9.   

    对不起:
    必须声明变量 '@sql'。 
    必须声明变量 '@sql'。 
    是因为;@sql nvarchar(4000);没有声明造成的?
    修改后的还是有问题:
    SqlCommand comm0 = new SqlCommand("declare @s int;declare @sql nvarchar(4000);set @sql=N'select @s=count(学号) from manage_student_info where  '+@tag+'='''+@content+'''';exec sp_executesql @sql,N'@s int output',@s output;select @s", conn); 错误信息:变量名 '@s' 已声明。变量名在批查询或存储过程内部必须唯一。 
      

  10.   

    可用sp_executesql 代替exec
    改为exec sp_executesql N'select @s=count(学号) from manage_student_info where  '+@tag+'='''+@content+'''',N'@s int output',@s output 
    @content也可不直接转换,而改用参数,但@tag一定要直接转换