Как заставить процедуру Oracle возвращать наборы результатов - PullRequest
1 голос
/ 20 ноября 2008

Процедура SQL Server может возвращать наборы результатов. У меня есть таблица emp (emp__id, emp__name, ...) . Приведенная ниже процедура вернет список сотрудников, которые соответствуют указанному имени.

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?

1 Ответ

3 голосов
/ 20 ноября 2008

Использовать курсор Ref для хранимой процедуры:
http://www.oradev.com/ref_cursor.jsp

Для клиентской части используйте Oracle Data Provider. Вы можете скачать его из 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...