Ich versuche diese gespeicherte Prozedur zu erstellen, die Kunden keine und E-Mail-Adresse als Eingabe nehmen sollte. Aktualisieren Sie dann die E-Mail-Adresse für diesen Kunden. Wenn die neue E-Mail-Adresse gleich alt ist, sollte die Ausnahme ausgelöst werden.Oracle Update gespeicherte Prozedur mit benutzerdefinierten Ausnahme
CREATE OR REPLACE PROCEDURE UpdateEmail
(CUSTOMERID IN CUSTOMER.CUSTOMERNO%TYPE,
N_EMAIL IN CUSTOMER.EMAIL%TYPE)
IS
DECLARE
e_same EXCEPTION;
V_ROWCOUNT NUMBER;
BEGIN
SELECT COUNT(EMAIL)
INTO V_ROWCOUNT
FROM [email protected]
WHERE CUSTOMER.EMAIL = N_EMAIL
AND CUSTOMER.CUSTOMERNO = CUSTOMERID;
IF V_ROWCOUNT > 0
THEN RAISE e_same;
ELSE
UPDATE CUSTOMER
SET EMAIL = N_EMAIL
WHERE CUSTOMER.CUSTOMERNO = CUSTOMERID;
END IF;
EXCEPTION
WHEN e_same THEN dbms_output.put_line ('email address exist');
END;
/
Aber es ist Fehler werfen. Nicht sicher, ob ich es richtig mache. Ich verwende den neuesten Oracle SQL Developer.
Error (6,1): PLS-00103: Fand das Symbol "DECLARE" wenn eine der folgenden erwarten: begin Funktion pragma Verfahren Subtyp Typ aktuellen Cursor löschen existiert das Symbol vor externen Sprache „begin "wurde für" DECLARE "ersetzt, um fortzufahren.
Fehler (28,4): PLS-00103: Das Symbol "Dateiende" beim Erwarten eines der folgenden: (Begin Fall deklarieren Ende Ausnahme Exit für Goto, wenn Schleife Mod Null Pragma Raise Return wählen Update während mit < < schließen Lock-Einsatz offen Satz Rollback-Speicherpunkt holen aktuellen löschen weiter sql forall Rohrspülung
Entfernen 'Declare' – Utsav