存储过程?

原创 2007年09月29日 01:18:00
过程或函数 'spProceBind' 需要参数 '@BigClass_ID',但未提供该参数。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Data.SqlClient.SqlException: 过程或函数 
'spProceBind' 需要参数 '@BigClass_ID',但未提供该参数。

源错误: 


行 
50:            
行 
51:             DataSet MyDataSet = new DataSet();
行 
52:             sqlAdapter1.Fill(MyDataSet,"Questions");
行 
53:             DataList1.DataSource=MyDataSet.Tables["Questions"].DefaultView;
行 
54:             DataList1.DataBind();
 

源文件: c:InetpubwwwrootTragramMiniWebTragMini ansearched.aspx.cs    行: 
52 

堆栈跟踪: 


[SqlException (
0x80131904): 过程或函数 'spProceBind' 需要参数 '@BigClass_ID',但未提供该参数。]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 
+857130
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 
+734742
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 
+188
   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 
+1838
   System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 
+31
   System.Data.SqlClient.SqlDataReader.get_MetaData() 
+62
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 
+297
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 
+886
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 
+132
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 
+32
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) 
+122
   System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) 
+12
   System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) 
+7
   System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 
+141
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 
+137
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) 
+83
   TangramMiniWeb.searched.BindGrid() 
in c:InetpubwwwrootTragramMiniWebTragMini ansearched.aspx.cs:52
   TangramMiniWeb.searched.Page_Load(Object sender, EventArgs e) 
in c:InetpubwwwrootTragramMiniWebTragMini ansearched.aspx.cs:69
   System.Web.UI.Control.OnLoad(EventArgs e) 
+99
   System.Web.UI.Control.LoadRecursive() 
+47
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
+1061

 


改正方法为:
  SqlParameter parm1
=sqlAdapter1.SelectCommand.Parameters.Add("@BigClass_ID", SqlDbType.Int, 4"BigClass_ID");
            SqlParameter parm2
= sqlAdapter1.SelectCommand.Parameters.Add("@SmallClass_ID", SqlDbType.Int, 4"SmallClass_ID");
            SqlParameter parm3
=sqlAdapter1.SelectCommand.Parameters.Add("@Q_Note", SqlDbType.VarChar, 160"Q_Note");
            SqlParameter parm4
=sqlAdapter1.SelectCommand.Parameters.Add("@ReferTime", SqlDbType.DateTime, 12"ReferTime");
            SqlParameter parm5 
= sqlAdapter1.SelectCommand.Parameters.Add("@Author", SqlDbType.NVarChar, 255"Author");
           
            parm1.Value 
= "-1000";
            
            parm2.Value 
= "-1000";
            parm3.Value 
= note;
            parm4.Value 
= Request.QueryString["ReferTime"];
            parm5.Value
=Request.QueryString["Author"];
 
public void BindGrid() 
        
{
            SqlConnection sqlConnection
=new SqlConnection(ConfigurationManager.AppSettings["DBConnection"]);

            
string note;
            
if (Request.QueryString["Q_Note"]=="%")
                note
="%";
            
else
                note
="%"+Request.QueryString["Q_Note"]+"%";

            SqlDataAdapter sqlAdapter1 
= new SqlDataAdapter("spProceBind", sqlConnection);
            sqlAdapter1.SelectCommand.CommandType 
= CommandType.StoredProcedure;

           
            SqlParameter parm1
=sqlAdapter1.SelectCommand.Parameters.Add("@BigClass_ID", SqlDbType.Int, 4"BigClass_ID");
            SqlParameter parm2
= sqlAdapter1.SelectCommand.Parameters.Add("@SmallClass_ID", SqlDbType.Int, 4"SmallClass_ID");
            SqlParameter parm3
=sqlAdapter1.SelectCommand.Parameters.Add("@Q_Note", SqlDbType.VarChar, 160"Q_Note");
            SqlParameter parm4
=sqlAdapter1.SelectCommand.Parameters.Add("@ReferTime", SqlDbType.DateTime, 12"ReferTime");
            SqlParameter parm5 
= sqlAdapter1.SelectCommand.Parameters.Add("@Author", SqlDbType.NVarChar, 255"Author");
           
            parm1.Value 
= "-1000";
            
            parm2.Value 
= "-1000";
            parm3.Value 
= note;
            parm4.Value 
= Request.QueryString["ReferTime"];
            parm5.Value
=Request.QueryString["Author"];
           
            DataSet MyDataSet 
= new DataSet();
            sqlAdapter1.Fill(MyDataSet,
"Questions");
            DataList1.DataSource
=MyDataSet.Tables["Questions"].DefaultView;
            DataList1.DataBind();

            
//this.Page.DataBind();        
        }

 

 

 

 

1.存储过程,貌似要用begin end

2.if Author is null

begin
.....
end

 

 

3.括号,用begin 和end 来代表

4.Author  BigClass_Id 
应该是从外面传进来的吧

5.消息207,级别16,状态1,过程spProceBind,第12 行
列名'Author' 无效。
消息207,级别16,状态1,过程spProceBind,第14 行
列名'BigClass_Id' 无效。
消息207,级别16,状态1,过程spProceBind,第31 行
列名'BigClass_Id' 无效

说明上面那2个参数不存在

 

CREATE PROCEDURE spProceBind
(
   
@BigClass_ID int ,
   
@SmallClass_ID int ,
   
@ReferTime datetime ,
   
@Q_Note nvarchar(255),
   
@author nvarchar(255)
)
as
if @author is null
begin
  
if  @BigClass_ID is null  
   
begin 
      
SELECT Q_ID,solved, author, Q_Note, Q_Content, ImageName, HiteCounter, AnsCounter,ReleaseTime, ReferTime, BigClass_ID, SmallClass_ID FROM Questions
      
WHERE (BigClass_ID =@BigClass_IDAND (SmallClass_ID =@SmallClass_IDAND (ReferTime >@ReferTimeAND (Q_Note LIKE @Q_Note)and(Kind >= 0)
                    
   
end
    
   
else
    
begin
       
SELECT Q_ID,solved, author, Q_Note, Q_Content, ImageName, HiteCounter, AnsCounter,ReleaseTime, ReferTime, BigClass_ID, SmallClass_ID FROM Questions
       
WHERE (ReferTime >@ReferTimeAND (Q_Note LIKE @Q_Note)and(Kind >= 0 )  
    
end
   

end
else
begin
   
if  @BigClass_Id is null 
    
begin
       
SELECT Q_ID,solved,author, Q_Note, Q_Content, ImageName, HiteCounter, AnsCounter,ReleaseTime, ReferTime, BigClass_ID, SmallClass_ID FROM Questions
       
WHERE (ReferTime > @ReferTimeAND (Q_Note LIKE @Q_NoteAND (author = @Author)and(Kind >= 0)
    
end
    
else
    
begin
     
SELECT Q_ID,solved, author, Q_Note, Q_Content, ImageName, HiteCounter, AnsCounter,ReleaseTime, ReferTime, BigClass_ID, SmallClass_ID FROM Questions
     
WHERE (BigClass_ID =@BigClass_IDAND (SmallClass_ID =@SmallClass_IDAND (ReferTime > @ReferTimeAND (Q_Note LIKE @Q_NoteAND (author =@author)and(Kind >= 0)
    
end
   
end

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

db2存储过程开发教程

  • 2017-10-12 08:41
  • 910KB
  • 下载

mysql的存储过程

一、定义存储过程类似于函数,就是把一段代码封装起来,当要执行这一段代码的时候,可以通过调用该存储过程来实现。 在封装的语句体里面,可以用if/else,case,while 等控制结构,也可以进行s...

存储过程注意点

  • 2017-09-23 11:11
  • 13KB
  • 下载

SQL Server系统存储过程

1、sp_help 查询表的信息   执行存储过程:   sp_help Person   显示结果如下:      妈了个B,有了这张图,你还不懂怎么看一张表有那些信息,那哥以后都...

触发器调用存储过程

存储过程和函数的区别

存储过程和函数的区别 存储过程和函数目的是为了 可重复地 执行操作数据库的sql语句的集合。 区别是写法和调用上。 写法上:存储过程的参数列表可以有输入参数、输出参数、可输入输出...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)