1

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で同等にコーディングするにはどうすればよいですか?

4

1 に答える 1

3

ストアド プロシージャに 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);
于 2008-11-20T08:50:15.973 に答える