熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ADO.NET訪問Oracle 9i存儲過程(上)[4]

2013-11-13 11:01:41  來源: .NET編程 

  不返回數據的存儲過程

  OracleCommand 類的 ExecuteOracleNonQuery() 方法用於執行不返回任何行的 SQL 語句或存儲過程該方法返回一個 int 值表示受 UPDATEINSERT 和 DELETE 命令影響的行數如果沒有任何行受到影響則返回 如果您所執行的 INSERTDELETE 或 UPDATE 語句恰好影響一行則該方法具有單個參數 OracleString out rowid該參數唯一標識 Oracle 數據庫中受影響的行可以使用該值來優化後續相關查詢

  還可以使用 OracleCommand 類的 ExecuteNonQuery() 方法來執行不返回數據的存儲過程但您將無法獲得上面介紹的唯一行標識符

  盡管上述命令都不會返回任何數據但映射到參數的輸出參數和返回值仍然使用數據進行填充這使您可以使用上述任一命令從存儲過程返回一個或多個標量值

  以下 Oracle 存儲過程刪除了由單個輸入參數指定的員工的所有工作經歷並且不返回任何數據

 CREATE OR new PROCEDURE DELETE_JOB_HISTORY

  (

  p_employee_id NUMBER

  )

  IS

  BEGIN

  DELETE FROM job_history

  WHERE employee_id = p_employee_id;

  END DELETE_JOB_HISTORY;

  以下代碼運行了該存儲過程

  // create the connection

  OracleConnection conn = new OracleConnection(Data Source=oracledb;

  User Id=UserID;Password=Password;);

  // create the command for the stored procedure

  OracleCommand cmd = new OracleCommand();

  cmdConnection = conn;

  cmdCommandText = COUNT_JOB_HISTORY;

  cmdCommandType = CommandTypeStoredProcedure;

  // add the parameter specifying the employee for whom to delete records

  cmdParametersAdd(p_employee_id OracleTypeNumber)Value = ;

  OracleString rowId;

  // execute the stored procedure

  connOpen();

  int rowsAffected = cmdExecuteNonQuery();

  connClose();

  ConsoleWriteLine(Rows affected: + rowsAffected);

[]  []  []  []  []  []  []  []  


From:http://tw.wingwit.com/Article/program/net/201311/15011.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.