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;
나는 위의 절차를 기록했다. 다음은ORACLE DB를 사용하는 PLSQL의 절차
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;
그것은 데이터를 찾을 수 없음으로 나에게 오류를 반환합니다,하지만 난 쿼리를 실행할 때 별도로 I 출력을 얻을, 위의 절차를 호출하는 PL/SQL 블록입니다. 나는 틀린 것을 알아낼 수 없었다. 프로 시저 블록을 올바르게 작성했는데 PL/SQL 블록에 전달 된 매개 변수가 맞습니까?
프로 시저가 삽입/업데이트/삭제를 수행하지 않으면 대신 함수를 사용하지 않는 이유는 무엇입니까? – user75ponic
출력 값이 출력되지 않는다는 것을 제외하고는 모든 것이 정상적으로 작동합니다 ...... 출력 라인이 인쇄됩니다. 즉, 프로그램 완료 상태 및 등록 날짜는 ENROL_DATE 및 COMPL_STATUS에 대한 값은 없습니다. 나는 또한 그냥 쿼리와 교차 확인하고 동일한 입력 매개 변수를 사용하여 출력 값을 반환했습니다. 문제는 확실하지 않지만 출력 매개 변수를 전달하거나 검색하는 데 문제가 있다고 생각합니다. – Pravin
왜 2009 년 값을 2 년으로, 2 년으로 전달합니까? 확실히 이러한 매개 변수는 반대가되어야합니다. 마지막 매개 변수에 사용하는 것처럼 항상 명명 된 매개 변수 표기법을 사용하면 도움이 될 것 같습니다. –