关于SQL中变量的问题
存储过程如下:
create proc uspFillQuestion    
     @Top int,
     @Question_Subject varchar (100),
     @Question_Chapter varchar (100)      
AS
     DECLARE @sql varchar (100)
     SET  @sql = 'SElECT TOP '+ cast(@Top as varchar(10))+'* from Fill_Question where Question_Subject=@Question_Subject and Question_Chapter=@Question_Chapter order by newid()'
     EXEC(@sql)
SQLhelper如下
SQLhelper helper = new SQLhelper();
SqlParameter[] param =
                           {
                               new SqlParameter("@Top",SqlDbType.Int),
                               new SqlParameter("@Question_Subject",SqlDbType.VarChar,100),
                               new SqlParameter("@Question_Chapter",SqlDbType.VarChar,100)
                           ) ;
param[0].Value = Fill.Top;
param[1].Value = Fill.Fill_Subject;
param[2].Value = Fill.Fill_Chapter;
return helper.ExecuteDataSet("uspGetFillQuestion",param);
实在是搞不明白了。不知道在哪里出现了问题!!!!
给出的错误提示是 "必须声明标量变量@Question_Subject"
------解决方案--------------------
主要是这里出了问题:
SET  @sql = 'SElECT TOP '+ cast(@Top as varchar(10))+'* from Fill_Question where Question_Subject=@Question_Subject and Question_Chapter=@Question_Chapter order by newid()'  
你这里是动态执行sql,但是注意红色部分你是写在单引号内的,即使动态sql是这样的SElECT TOP xxx * from Fill_Question where Question_Subject=@Question_Subject and Question_Chapter=@Question_Chapter order by newid()
在这段sql里你并没有申明@Question_Subject 和@Question_Chapter