使用ADO.NET訪問Oracle 9i預存程序(下)

來源:互聯網
上載者:User

  對於 HR 架構的預設安裝,控制台輸出顯示了員工 101 的兩個記錄中每個記錄的欄位(用分號分隔):

  101;9/21/1989 12:00:00 AM;10/27/1993 12:00:00 AM;AC_ACCOUNT;110;

  101;10/28/1993 12:00:00 AM;3/15/1997 12:00:00 AM;AC_MGR;110;

  上述代碼顯示,包中的過程是使用包名稱 (ELECT_JOB_HISTORY) 和過程的名稱(在此情況下為 GetJobHistoryByEmployeeId)指定的,二者之間用句點分隔。

  代碼還說明了如何定義結果集的 REF CURSOR 參數。請注意,資料類型為 OracleType.Cursor,方向為 ParameterDirection.Output。

  還請注意,在訪問 REF CURSOR 中的結果集的整個過程中,串連都保持開啟狀態。

  如果包返回多個遊標,則 DataReader 會按照您向參數集合中添加它們的順序來訪問這些遊標,而不是按照它們在過程中出現的順序來訪問。可使用 DataReader 的 NextResult() 方法前進到下一個遊標。

  返回單個值的預存程序

  OracleCommand 類的 ExecuteOracleScalar() 方法用於執行將單個值作為 OracleType 資料類型返回的 SQL 陳述式或預存程序。如果命令返回一個結果集,則該方法會返回第一行第一列的值。如果返回了 REF CURSOR,而不是返回了 REF CURSOR 所指向的第一行第一列的值,則該方法會返回一個Null 參考。OracleCommand 類的 ExecuteScalar() 方法類似於 ExecuteOracleScalar() 方法,只不過它將值作為 .NET 架構資料類型返回。

  儘管如此,在使用 Oracle 預存程序時,這兩個方法都沒有用。Oracle 預存程序不能將值作為 RETURN 語句的一部分返回,而只能將其作為 OUT 參數返回。有關資訊,請參閱不返回資料的預存程序一節。同時,除了通過 REF CURSOR 輸出參數以外,您不能返回結果集。下一節將對此進行討論。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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