日期:2014-05-18  浏览次数:20493 次

错误:必須宣告純量變數 "@ddbh"。
后台代码:  
  SqlDataSource4.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
  SqlDataSource1.SelectParameters.Clear();
  SqlDataSource4.SelectCommand = "selectmethod";
   
  SqlDataSource4.SelectParameters.Add("ddbh", ypbh); 
   
  GridView2.DataBind();

存储过程:

ALTER PROCEDURE selectmethod
@ddbh varchar(50)
AS
BEGIN
SET NOCOUNT ON;

DECLARE @sql VARCHAR(8000)
SET @sql = 'SELECT ddbh,site,method'
SELECT @sql = @sql + ',MIN(CASE WHEN size = '''+ size + ''' THEN value END) AS ['+ size +']'
  FROM (SELECT DISTINCT size FROM method ) A

 ORDER BY size DESC

SELECT @sql = @sql + ',unit FROM method where ddbh=@ddbh GROUP BY ddbh,site,method,unit'

EXEC (@sql)
end
go

实在找不出错在哪里,哪位帮帮我,

------解决方案--------------------
SqlDataSource4.SelectParameters.Add("@ddbh", ypbh);
------解决方案--------------------
参数没有声明。
------解决方案--------------------
我晕了,没猜错的话是你的ypbh为空,那ypbh.ToString()当然就不行了,

这样写

SqlDataSource4. SelectParameters.Add("@ddph",SqlDbType .VarChar,50)= ypbh;
为这句加上判断
if(string.IsNullOrEmprty(ypbh)
{
SqlDataSource4. SelectParameters.Add("@ddph",SqlDbType .VarChar,50)= DBNull.Value;
}
else
{
SqlDataSource4. SelectParameters.Add("@ddph",SqlDbType .VarChar,50)= ypbh;
}
用存储过程的时候变量不能为空值,要显示的指明为DBNull.Value
------解决方案--------------------
我也想知道,正在找這方面的資料~~~~~