CREATE OR REPLACE PROCEDURE ABC (REG_NO IN CO_ENROLMENT.S_REGNO%TYPE,
TERM IN COURSEOFFERING.CO_TERMNUMBER%TYPE,
YEAR IN COURSEOFFERING.CO_YEAR%TYPE,
CO_TITLE IN COURSE.C_TITLE%TYPE,
EN_DATE OUT CO_ENROLMENT.COE_ENROLDATE%TYPE,
COM_ST OUT CO_ENROLMENT.COE_COMPLETIONSTATUS%TYPE)
AS
BEGIN
SELECT M.COE_COMPLETIONSTATUS, M.COE_ENROLDATE
INTO COM_ST, EN_DATE
FROM COURSEOFFERING O
INNER JOIN COURSE C
ON C.C_ID = O.C_ID
INNER JOIN CO_ENROLMENT M
ON M.CO_ID = O.CO_ID
WHERE M.S_REGNO LIKE REG_NO AND
O.CO_TERMNUMBER LIKE TERM AND
O.CO_YEAR LIKE YEAR AND
C.C_TITLE LIKE CO_TITLE;
END ABC;
我寫過上面的程序。 下面是PL/SQL塊上面的程序調用,PLSQL中使用ORACLE DB的程序
DECLARE
COMPL_STATUS CO_ENROLMENT.COE_COMPLETIONSTATUS%TYPE;
ENROL_DATE CO_ENROLMENT.COE_ENROLDATE%TYPE;
BEGIN
ABC (44444444, 2009, 2, 'PLSQL Programming',
EN_DATE => enrol_date, COM_ST =>compl_status);
DBMS_OUTPUT.PUT_LINE ('STUDENT COMPLETION STATUS AND ENROLMENT DATE IS '
|| ENROL_DATE
|| ' '
|| compl_status);
END;
它的發現沒有數據返回我的錯誤,但是當我運行查詢分開我得到的輸出。我無法弄清楚什麼是錯的。我是否正確編寫了過程塊,並且在PL/SQL塊中傳遞的參數是否正確?
如果你的程序沒有做任何插入/更新/刪除,那麼爲什麼不使用函數呢? – user75ponic
一切工作正常,除了輸出值不被打印......輸出行被打印即完成狀態和註冊日期是但ENROL_DATE和COMPL_STATUS沒有值。我也通過查詢進行了交叉檢查,並使用相同的輸入參數返回了我的輸出值。雖然我不確定,但我認爲問題在某個地方傳遞或檢索輸出參數。 – Pravin
爲什麼你將2009年的價值轉化爲期限和2年?當然這些參數應該顛倒過來。看起來你會從總是使用命名參數符號(就像你用於最後兩個參數)中獲益。 –