CREATE PROCEDURE  [dbo].[get_winnumber]
@winNum int
ASSelect W.* From runNum R Inner Join winNum W ON
R.[runNum]=W.[winNum] Where R.state=0if(@@RowCount=1)
begin
update   runNum  set state=1 where [runNum]=@winNum
end
GO
错误如下:
过程 'get_winnumber' 需要参数 '@winNum',但未提供该参数。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 过程 'get_winnumber' 需要参数 '@winNum',但未提供该参数。源错误: 
行 66:             DbCommand dbCommand = db.GetStoredProcCommand("get_winnumber");
行 67: 
行 68:             DataRow dr = db.ExecuteDataSet(dbCommand).Tables[0].Rows[0];
行 69: 
行 70:             WinInfo winnum = new WinInfo((Guid)dr["id"], (int)dr["winNum"], dr["winMessage"].ToString(),(bool)dr["winType"]);
 

解决方案 »

  1.   

    CREATE PROCEDURE [dbo].[get_winnumber]
    @winNum int =1--=1 是默认值,你要运行 存储过程时 传入参数
    ASSelect W.* From runNum R Inner Join winNum W ON
    R.[runNum]=W.[winNum] Where R.state=0if(@@RowCount=1)
    begin
    update runNum set state=1 where [runNum]=@winNum
    end
    GO比如:
    exec [dbo].[get_winnumber] 2 --这个2 就是参数,传给@winNum 
      

  2.   

    DbCommand dbCommand = db.GetStoredProcCommand("get_winnumber");
    dbCommand.Parameters.Add("@winNum", 20);
    你需要给存储过程中的参数@winNum来指定相应的值,可是你没有,所以报错了 。
      

  3.   

    CREATE PROCEDURE [dbo].[get_winnumber]
    @winNum integer
    ASSelect W.* From runNum R Inner Join winNum W ON
    R.[runNum]=W.[winNum] Where R.state=0if(@@RowCount=1)
    begin
    update runNum set state=1 where [runNum]=@winNum
    end
    GO访问时需要提供winNum的值
    ........SqlCommand cmd = new SqlCommand("adduser", con);
                    cmd.CommandType = CommandType.StoredProcedure;                cmd.Parameters.Add(new SqlParameter("@name",SqlDbType.VarChar,32));
    cmd.Parameters["@name"].Value = name;
    ..................................................
    如上面代码片段所示,希望你能理解!