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;
J'ai écrit ci-dessus procédure. est Ci-dessous bloc PL/SQL pour appeler procédure ci-dessus,Procédures dans PLSQL utilisant 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;
Il me renvoie une erreur car aucune donnée trouvée, mais quand je lance une requête, séparément je reçois la sortie. Je ne pouvais pas comprendre ce qui ne va pas. Ai-je écrit correctement le bloc de procédure et les paramètres passés dans le bloc PL/SQL sont-ils corrects?
Si votre procédure n'effectue aucune insertion/mise à jour/suppression, pourquoi ne pas utiliser une fonction à la place? – user75ponic
Tout fonctionne correctement, sauf que les valeurs de sortie ne sont pas imprimées ...... la ligne de sortie est imprimée, c'est-à-dire STATUT DE L'EXÉCUTION DE L'ÉLÉMENT ET DATE D'INSCRIPTION EST mais aucune valeur pour ENROL_DATE et COMPL_STATUS. J'ai également vérifié avec juste la requête et il m'a renvoyé des valeurs de sortie avec les mêmes paramètres d'entrée. Je pense que le problème est quelque part en passant ou en récupérant des paramètres de sortie bien que je ne sois pas sûr. – Pravin
Pourquoi passez-vous la valeur 2009 à terme et 2 à l'année? Sûrement ces paramètres devraient être inversés. Il semble que vous auriez avantage à toujours utiliser la notation des paramètres nommés (comme pour les deux derniers paramètres). –