存储过程?

原创 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

 

 

 

oracle 存储过程

  • 2017年11月20日 18:32
  • 68KB
  • 下载

MVC+EF+ 存储过程的小案例

  • 2017年11月16日 10:07
  • 6.66MB
  • 下载

Oracle 存储过程快速入门

1.什么是oracle存储过程 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块。但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存...

mysql存储过程

  • 2017年11月07日 17:14
  • 2KB
  • 下载

全能增删查分页存储过程

  • 2017年11月16日 14:02
  • 4KB
  • 下载

Mysql 分页存储过程代码

最近项目是用mysql存储过程,琢磨了下通用的mysql 存储过程分页写法,觉得通用度很高,随笔几下分享。   分页信息列表查询 PROCEDURE xx.p_common_findByPage(I...

万能分页存储过程

  • 2017年11月23日 12:36
  • 1KB
  • 下载

SQL Server数据库的存储过程中定义的临时表,真的有必要显式删除(drop table #tableName)吗?

问题背景 在写SQL Server存储过程中,如果存储过程中定义了临时表, 有些人习惯在存储过程结束的时候一个一个显式地删除过程中定义的临时表(drop table #tName),有些人又没...

存储过程循坏

  • 2017年10月30日 13:44
  • 714B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:存储过程?
举报原因:
原因补充:

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