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年?当然这些参数应该颠倒过来。看起来你会从总是使用命名参数符号(就像你用于最后两个参数)中获益。 –