J'essaie de créer une procédure PL/SQL. Mais ça ne fonctionne pas correctement. S'il vous plaît, regardez le code et donnez des conseils à ce sujet.Erreur dans PL/SQL et SQL% ROWCOUNT
CREATE OR REPLACE PROCEDURE TEST IS
DECLARE
EMPLOYEENUM EMPLOYEE.E#%type;
EMPLOYEENAME EMPLOYEE.NAME%type;
NUMRECORDS NUMBER(2);
BEGIN
SELECT EMP.E# INTO EMPLOYEENUM ,EMP.NAME INTO EMPLOYEENAME
FROM EMPLOYEE EMP
WHERE EXISTS
(SELECT * FROM MECHANIC, DRIVER
WHERE EMP.E# = DRIVER.E#
AND EMP.E# = MECHANIC.E#);
SELECT COUNT(*) INTO NUMRECORDS
FROM (
SELECT EMP.E#,EMP.NAME
FROM EMPLOYEE EMP
WHERE EXISTS
(SELECT * FROM MECHANIC, DRIVER
WHERE EMP.E# = DRIVER.E#
AND EMP.E# = MECHANIC.E#));
IF (NUMRECORDS > 0) THEN
DBMS_OUTPUT.PUT_LINE('ERROR: CANNOT MAKE MORE THEN 2 TRIPS PER DAY');
ROLLBACK;
ELSE
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
ROLLBACK;
END VERIFY;
Et je suis sûr que je n'ai pas besoin de réexécuter le code pour voir le nombre de lignes. Je crois comprendre qu'il ya quelque chose appelé
SQL% ROWCOUNT
qui retourne le nombre de lignes. S'il vous plaît aviser comment l'utiliser.
"ne fonctionne pas correctement" n'est PAS une information utile. Comment ça ne marche pas? mauvais résultats? Message d'erreur? donner un coup de pied à votre chien et voler votre argent de déjeuner? –
Le premier SELECT peut être retiré. Il n'ajoute rien –
directement après avoir fait votre select ou dml, faire quelque chose comme v_rows_affected: = SQL% ROWCOUNT; Voir ici: http://docs.oracle.com/cd/E11882_01/appdev.112/e17126/static.htm#CIHJJJDG – tbone