Plsql 如何使Oracle过程返回结果集

Plsql 如何使Oracle过程返回结果集,plsql,Plsql,SQL Server过程可以返回结果集。我有一个表emp(emp\uu id,emp\uu 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

SQL Server过程可以返回结果集。我有一个表emp(emp\uu id,emp\uu 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中进行等效编码?

对存储过程使用Ref游标:

对于客户端,请使用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);