C# アプリケーションの DataSet に送信するデータを取得するために、以下のストアド プロシージャを作成しました。
ストアド プロシージャのより堅牢な設計を提案していただけますか? これは、レコード セットを返す最良の方法ではないと思います。
CREATE OR REPLACE PROCEDURE GET_EMPLOYEE_DATA
(
EMPLOYEE_EMAIL IN VARCHAR2,
EMP_RECORD_SET1 OUT SYS_REFCURSOR,
EMP_RECORD_SET2 OUT SYS_REFCURSOR,
EMP_RECORD_SET3 OUT SYS_REFCURSOR,
EMP_RECORD_SET4 OUT SYS_REFCURSOR
) AS
BEGIN
OPEN EMP_RECORD_SET1 FOR
SELECT EMPLOYEENAME AS EMP_NAME,
EMPLOYEELASTNAME AS EMP_LAST_NAME,
EMPLOYEEFIRSTNAME AS EMP_FIRST_NAME
FROM EMP.EMPLOYEES
WHERE EMP_EMAIL = EMPLOYEE_EMAIL
;
OPEN EMP_RECORD_SET2 FOR
SELECT EMPLOYEEADD AS EMP_ADDRESSESS,
EMPLOYEECITY AS EMP_CITY,
EMPLOYEE_STATE AS EMP_STATE
FROM EMP.EMPLOYEES_ADDRESSES
WHERE EMP_EMAIL = EMPLOYEE_EMAIL;
OPEN EMP_RECORD_SET3 FOR
SELECT EMPLOYEEPHONE AS EMP_PHONE,
EMPLOYEEEXTENSION AS EMP_EXTENSION
FROM EMP.EMPLOYEES_CONTACTS
WHERE EMP_EMAIL = EMPLOYEE_EMAIL
;
OPEN EMP_RECORD_SET4 FOR
SELECT EMPLOYEEJOB AS EMP_JOB,
EMPLOYEERESPONSIBILITIES AS EMP_RESPONSIBILITIES
FROM EMP.EMPLOYEES_DATA
WHERE EMP_EMAIL = EMPLOYEE_EMAIL
;
END GET_PROTOCOL_INFO_SP;
構文が正しいかどうか、カーソルを閉じる必要があるかどうかを知る必要があります。アプリでデータが呼び出される4つの異なるテーブルがあります。