2008-11-20 3 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); 

 Смежные вопросы

  • Нет связанных вопросов^_^