.Net裡怎麼得到預存程序的傳回值

來源:互聯網
上載者:User

除了輸入和輸出參數之外,預存程序還可以具有傳回值。以下樣本闡釋   ADO.NET   如何發送和接收輸入參數、輸出參數和傳回值,其中採用了這樣一種常見方案:將新記錄插入其中主鍵列是自動編號欄位的表。該樣本使用輸出參數來返回自動編號欄位的   @@Identity,而   DataAdapter   則將其綁定到   DataTable   的列,使   DataSet   反映所產生的主索引值。  
  該樣本使用以下預存程序將新目錄插入   Northwind   Categories   表(該表將   CategoryName   列中的值當作輸入參數),從   @@Identity   中以輸出參數的形式返回自動編號欄位   CategoryID   的值,並提供所影響行數的傳回值。  
  CREATE   PROCEDURE   InsertCategory  
      @CategoryName   nchar(15),  
      @Identity   int   OUT  
  AS  
  INSERT   INTO   Categories   (CategoryName)   VALUES(@CategoryName)  
  SET   @Identity   =   @@Identity  
  RETURN   @@ROWCOUNT  
  以下樣本將   InsertCategory   預存程序用作   DataAdapter   的   InsertCommand   的資料來源。通過將   CategoryID   列指定為   @Identity   輸出參數的   SourceColumn,當調用   DataAdapter   的   Update   方法時,所產生的自動編號值將在該記錄插入資料庫後在   DataSet   中得到反映。  
  對於   OleDbDataAdapter,必須在指定其他參數之前先指定   ParameterDirection   為   ReturnValue   的參數。  
  SqlClient  
  [Visual   Basic]  
  Dim   nwindConn   As   SqlConnection   =   New   SqlConnection("Data   Source=localhost;Integrated   Security=SSPI;"   &   _  
                                                                                                              "Initial   Catalog=northwind")  
   
  Dim   catDA   As   SqlDataAdapter   =   New   SqlDataAdapter("SELECT   CategoryID,   CategoryName   FROM   Categories",   nwindConn)  
   
  catDA.InsertCommand   =   New   SqlCommand("InsertCategory"   ,   nwindConn)  
  catDA.InsertCommand.CommandType   =   CommandType.StoredProcedure  
   
  Dim   myParm   As   SqlParameter   =   catDA.InsertCommand.Parameters.Add("@RowCount",   SqlDbType.Int)  
  myParm.Direction   =   ParameterDirection.ReturnValue  
   
  catDA.InsertCommand.Parameters.Add("@CategoryName",   SqlDbType.NChar,   15,   "CategoryName")  
   
  myParm   =   catDA.InsertCommand.Parameters.Add("@Identity",   SqlDbType.Int,   0,   "CategoryID")  
  myParm.Direction   =   ParameterDirection.Output  
   
  Dim   catDS   As   DataSet   =   New   DataSet()  
  catDA.Fill(catDS,   "Categories")  
   
  Dim   newRow   As   DataRow   =   catDS.Tables("Categories").NewRow()  
  newRow("CategoryName")   =   "New   Category"  
  catDS.Tables("Categories").Rows.Add(newRow)  
   
  catDA.Update(catDS,   "Categories")  
   
  Dim   rowCount   As   Int32   =   CInt(catDA.InsertCommand.Parameters("@RowCount").Value)  
  [C#]  
  SqlConnection   nwindConn   =   new   SqlConnection("Data   Source=localhost;Integrated   Security=SSPI;"   +  
                                                                                          "Initial   Catalog=northwind");  
   
  SqlDataAdapter   catDA   =   new   SqlDataAdapter("SELECT   CategoryID,   CategoryName   FROM   Categories",   nwindConn);  
   
  catDA.InsertCommand   =   new   SqlCommand("InsertCategory",   nwindConn);  
  catDA.InsertCommand.CommandType   =   CommandType.StoredProcedure;  
   
  SqlParameter   myParm   =   catDA.InsertCommand.Parameters.Add("@RowCount",   SqlDbType.Int);  
  myParm.Direction   =   ParameterDirection.ReturnValue;  
   
  catDA.InsertCommand.Parameters.Add("@CategoryName",   SqlDbType.NChar,   15,   "CategoryName");  
   
  myParm   =   catDA.InsertCommand.Parameters.Add("@Identity",   SqlDbType.Int,   0,   "CategoryID");  
  myParm.Direction   =   ParameterDirection.Output;  
   
  DataSet   catDS   =   new   DataSet();  
  catDA.Fill(catDS,   "Categories");  
   
  DataRow   newRow   =   catDS.Tables["Categories"].NewRow();  
  newRow["CategoryName"]   =   "New   Category";  
  catDS.Tables["Categories"].Rows.Add(newRow);  
   
  catDA.Update(catDS,   "Categories");  
   
  Int32   rowCount   =   (Int32)catDA.InsertCommand.Parameters["@RowCount"].Value;  
  OleDb  
  [Visual   Basic]  
  Dim   nwindConn         As   OleDbConnection   =   New   OleDbConnection("Provider=SQLOLEDB;Data   Source=localhost;"   &   _  
                                                                                                                      "Integrated   Security=SSPI;Initial   Catalog=northwind")  
   
  Dim   catDA   As   OleDbDataAdapter   =   New   OleDbDataAdapter("SELECT   CategoryID,   CategoryName   FROM   Categories",   _  
                                                                                                            nwindConn)  
   
  catDA.InsertCommand   =   New   OleDbCommand("InsertCategory"   ,   nwindConn)  
  catDA.InsertCommand.CommandType   =   CommandType.StoredProcedure  
   
  Dim   myParm   As   OleDbParameter   =   catDA.InsertCommand.Parameters.Add("@RowCount",   OleDbType.Integer)  
  myParm.Direction   =   ParameterDirection.ReturnValue  
   
  catDA.InsertCommand.Parameters.Add("@CategoryName",   OleDbType.Char,   15,   "CategoryName")  
   
  myParm   =   catDA.InsertCommand.Parameters.Add("@Identity",   OleDbType.Integer,   0,   "CategoryID")  
  myParm.Direction   =   ParameterDirection.Output  
   
  Dim   catDS   As   DataSet   =   New   DataSet()  
  catDA.Fill(catDS,   "Categories")  
   
  Dim   newRow   As   DataRow   =   catDS.Tables("Categories").NewRow()  
  newRow("CategoryName")   =   "New   Category"  
  catDS.Tables("Categories").Rows.Add(newRow)  
   
  catDA.Update(catDS,   "Categories")  
   
  Dim   rowCount   As   Int32   =   CInt(catDA.InsertCommand.Parameters("@RowCount").Value)  
  [C#]  
  OleDbConnection   nwindConn   =   new   OleDbConnection("Provider=SQLOLEDB;Data   Source=localhost;"   +    
                                                                                                  "Integrated   Security=SSPI;Initial   Catalog=northwind");  
   
  OleDbDataAdapter   catDA   =   new   OleDbDataAdapter("SELECT   CategoryID,   CategoryName   FROM   Categories",   nwindConn);  
   
  catDA.InsertCommand   =   new   OleDbCommand("InsertCategory",   nwindConn);  
  catDA.InsertCommand.CommandType   =   CommandType.StoredProcedure;  
   
  OleDbParameter   myParm   =   catDA.InsertCommand.Parameters.Add("@RowCount",   OleDbType.Integer);  
  myParm.Direction   =   ParameterDirection.ReturnValue;  
   
  catDA.InsertCommand.Parameters.Add("@CategoryName",   OleDbType.Char,   15,   "CategoryName");  
   
  myParm   =   catDA.InsertCommand.Parameters.Add("@Identity",   OleDbType.Integer,   0,   "CategoryID");  
  myParm.Direction   =   ParameterDirection.Output;  
   
  DataSet   catDS   =   new   DataSet();  
  catDA.Fill(catDS,   "Categories");  
   
  DataRow   newRow   =   catDS.Tables["Categories"].NewRow();  
  newRow["CategoryName"]   =   "New   Category";  
  catDS.Tables["Categories"].Rows.Add(newRow);  
   
  catDA.Update(catDS,   "Categories");  
   
  Int32   rowCount   =   (Int32)catDA.InsertCommand.Parameters["@RowCount"].Value;

.NET中如何調用預存程序  
   
  http://www.5d.cn/Tutorial/webdevelop/asp/200412/1960.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.