2008-11-20 36 views
1

SQL Server過程可以返回結果集。我有一個表emp(emp__id,emp__name,...)。以下程序將返回與提供的名稱匹配的員工列表。如何使Oracle過程返回結果集

CREATE OR REPLACE PROCEDURE get_employee_by_name (@name VARCHAR(100)) 
AS 
SELECT emp_id, emp_name 
FROM emp 
WHERE emp_name = @name; 

所以在客戶端代碼中,爲了獲得我使用ADO.NET的數據。

SQLDataAdapter adapter = new SQLDataAdapter("get_employee_by_name", cnString); 
SQLDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure; 
DataTable dt = new DataTable("employee"); 

adapter.Fill(dt); 

如何在PL/SQL中等效編碼?

回答

3

使用REF遊標的存儲過程:
http://www.oradev.com/ref_cursor.jsp

對於客戶端部分使用Oracle數據提供程序。您可以從Oracle下載它,語法與SQLDataAdapter相似。類似這樣的:

OracleDataAdapter da = new OracleDataAdapter(); 
da.SelectCommand = new OracleCommand("get_employee_by_name", Connection); 
OracleParameter prm = da.SelectCommand.Parameters.Add("pName", OracleDbType.VarChar2); 
prm.Direction = ParameterDirection.Input; 
prm.Value = "MyName"; 
prm = da.SelectCommand.Parameters.Add("pResult", OracleDbType.RefCursor); 
prm.Direction = ParameterDirection.Output; 
DataTable dt = new DataTable(); 
da.Fill(dt); 
相關問題