Hinzufügen eines Eingabeparameters zur Prozedur
In den vorherigen Schritten haben Sie eine gespeicherte Prozedur namens insert_employee
erstellt und aufgerufen, die zwei Eingabeparameter akzeptiert: employee_name
und employee_department
. In diesem Schritt werden Sie lernen, wie Sie der Prozedur einen weiteren Eingabeparameter hinzufügen.
Fügen wir der insert_employee
-Prozedur einen employee_salary
-Parameter hinzu. Dadurch können wir das Gehalt des Mitarbeiters angeben, wenn wir einen neuen Datensatz einfügen.
Zunächst müssen Sie die vorhandene Prozedur löschen. Wenn Sie sie nicht löschen, erhalten Sie einen Fehler, wenn Sie versuchen, eine Prozedur mit demselben Namen zu erstellen. Verbinden Sie sich mit MySQL, falls Sie noch nicht verbunden sind:
mysql -u root -p
Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden.
USE testdb;
Löschen Sie die vorhandene Prozedur:
DROP PROCEDURE IF EXISTS insert_employee;
Nun erstellen wir die geänderte gespeicherte Prozedur mit dem neuen Eingabeparameter.
DELIMITER //
CREATE PROCEDURE insert_employee (IN employee_name VARCHAR(255), IN employee_department VARCHAR(255), IN employee_salary DECIMAL(10, 2))
BEGIN
INSERT INTO employees (name, department) VALUES (employee_name, employee_department);
-- Add salary update after insert
UPDATE employees SET salary = employee_salary WHERE name = employee_name AND department = employee_department;
END //
DELIMITER ;
Lassen Sie uns die Änderungen analysieren:
- Wir haben der Prozedurdefinition einen neuen Eingabeparameter
IN employee_salary DECIMAL(10, 2)
hinzugefügt. DECIMAL(10, 2)
ist der Datentyp für das Gehalt, der bis zu 10 Ziffern mit 2 Dezimalstellen zulässt.
- Wir haben der
employees
-Tabelle eine neue Spalte salary
hinzugefügt. Sie müssen diese Spalte manuell mit der folgenden SQL-Anweisung hinzufügen:
ALTER TABLE employees ADD COLUMN salary DECIMAL(10, 2);
- Wir haben eine
UPDATE
-Anweisung hinzugefügt, um das Gehalt des neu eingefügten Mitarbeiters zu aktualisieren. Da die INSERT
-Anweisung nicht direkt das Setzen des Gehalts unterstützt, fügen wir zunächst den Mitarbeiter ein und aktualisieren dann das Gehalt basierend auf dem Namen und der Abteilung.
Nun rufen wir die geänderte insert_employee
-Prozedur auf, um einen neuen Mitarbeiter namens "Charlie Brown" in der Abteilung "Finance" mit einem Gehalt von 60000,00 einzufügen:
CALL insert_employee('Charlie Brown', 'Finance', 60000.00);
Um zu überprüfen, ob die Daten korrekt eingefügt wurden, können Sie die employees
-Tabelle abfragen:
SELECT * FROM employees;
Sie sollten eine neue Zeile in der Tabelle sehen, mit dem Namen "Charlie Brown", der Abteilung "Finance" und dem Gehalt 60000,00.
Sie haben nun erfolgreich einen Eingabeparameter zur gespeicherten Prozedur insert_employee
hinzugefügt und überprüft, dass die Daten korrekt eingefügt wurden. Dies zeigt, wie gespeicherte Prozeduren modifiziert werden können, um neue Anforderungen zu erfüllen.