我已經編寫了下面的存儲過程來檢索要發送到我的C#應用程序的DataSet的數據。Oracle存儲過程問題
您能否爲我的存儲過程建議一個更強大的設計?我假設這不是返回記錄集的最佳方式。
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個不同的表格,在應用程序中調用數據。
歡迎使用StackOverflow:如果您發佈代碼,XML或數據樣本,請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」)格式和語法突出顯示它! – 2012-07-20 13:54:07
您在客戶端應用程序中如何處理這些結果?你真的提出4個完全獨立的結果表嗎?或者您是否呈現了員工不同屬性的單一視圖? EMP_EMAIL是這些表中的一個關鍵嗎?或者是否真的有可能在所有4個表中有相同的'EMPLOYEE_EMAIL'多行?如果有多名員工使用同一封電子郵件,您如何確定客戶端的哪個地址/電話等數據與哪位員工有關? – 2012-07-20 16:25:03
謝謝marc_s。 @justin洞穴 - 我需要知道我的語法是否正確,以及我是否應該關閉遊標。是的,我有4個不同的表,其中數據在應用程序中調用 – 2012-07-20 18:14:34