Duplikate erkennen und Fehlermeldung ausgeben in Oracle PL/SQL
In diesem Blog-Beitrag zeige ich euch, wie man eine Prüfung erstellt, um zu schauen, ob die Werte schon bereits in der Datenbank liegen. Wir verwenden hierfür die Standarddaten aus der
EMP
Tabelle.Problemstellung
Das Ziel ist es, zu verhindern, dass der Mitarbeiter mit dem Namen "Clark" mehrfach in der Datenbank gespeichert wird. Falls ein Eintrag mit diesem Namen bereits existiert, soll eine Fehlermeldung ausgegeben werden.
Lösungsansatz
Um dieses Problem zu lösen, verwenden wir PL/SQL, die Prozedur-Sprache für Oracle-Datenbanken. Der folgende Code prüft, ob der Name "Clark" bereits in der `EMP`-Tabelle vorhanden ist. Falls ja, gibt das System eine Fehlermeldung aus.
-- Declare the variables used in the PL/SQL block
DECLARE
v_check_duplicate NUMBER; -- Variable to store the count of duplicate names
v_emp_name VARCHAR2(4000) := 'Clark'; -- Variable to store the employee name
-- Begin the execution block
BEGIN
-- Check for duplicates in the EMP table where the employee name matches v_emp_name (case insensitive)
SELECT COUNT(*)
INTO v_check_duplicate
FROM dual
WHERE EXISTS (SELECT EMPNO
FROM EMP
WHERE LOWER(ENAME) = LOWER(v_emp_name));
-- If exactly one duplicate is found, output an error message
IF v_check_duplicate = 1 THEN
-- The following block is commented out but is intended for use in an Oracle APEX environment
-- to display an error message directly on a page item.
/*
APEX_ERROR.ADD_ERROR (
p_message => v_emp_name || ' exists already!',
p_display_location => apex_error.c_inline_with_field_and_notif,
p_page_item_name => 'APEX_PAGE_ITEM_NAME'
);
*/
-- For environments other than APEX, output the error to the console
DBMS_OUTPUT.PUT_LINE(v_emp_name || ' exists already!');
END IF;
-- End the execution block
END;
0 $type={blogger}:
Kommentar veröffentlichen