当前位置: 代码迷 >> ASP.NET >> 异常:必須宣告純量變數 "@ddbh"
  详细解决方案

异常:必須宣告純量變數 "@ddbh"

热度:8820   发布时间:2013-02-25 00:00:00.0
错误:必須宣告純量變數 "@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
------解决方案--------------------------------------------------------
我也想知道,正在找這方面的資料~~~~~
  相关解决方案