Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie man gespeicherte MySQL-Funktionen und -Prozeduren erstellt und ausführt

Dieser Artikel beschreibt, wie Sie gespeicherte MySQL-Funktionen und -Prozeduren auf Ihrem A2-Hosting-Konto erstellen und ausführen. Sie können gespeicherte Funktionen und Prozeduren für eine Vielzahl von Szenarien verwenden. Beispielsweise können gut gestaltete gespeicherte Funktionen und Prozeduren die Datenbanksicherheit verbessern, die Datenintegrität verbessern und die Leistung steigern.

Gespeicherte Funktionen

Gespeicherte MySQL-Funktionen bieten eine leistungsstarke und flexible Möglichkeit, Daten zu manipulieren und zu verarbeiten. Sie können gespeicherte Funktionen auf jedem A2-Hosting-Server definieren und ausführen, der MySQL verwendet.

Einrichten einer Testdatenbank

Um ein einfaches Beispiel für gespeicherte Funktionen zu demonstrieren, beginnen wir mit dem Erstellen einer Datenbank, die wir zu Testzwecken verwenden können. Ersetzen Sie in der folgenden SQL-Anweisung Benutzername mit Ihrem Konto-Benutzernamen:

CREATE DATABASE username_test;
Sie können den vorherigen SQL-Befehl (und die folgenden SQL-Befehle) über die Befehlszeile mit dem MySQL-Tool oder in Ihrem Webbrowser mit phpMyAdmin ausführen.

Wenn Sie phpMyAdmin verwenden, klicken Sie auf den Namen Benutzername _test, um die Datenbank auszuwählen. Andernfalls, wenn Sie das mysql-Befehlszeilenprogramm verwenden, geben Sie die folgende SQL-Anweisung ein:

USE username_test;

Erstellen Sie als Nächstes eine Tabelle im Benutzernamen _test Datenbank mit dem Namen products . Führen Sie dazu die folgende SQL-Anweisung aus:

CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));

Die folgende SQL-Anweisung fügt einige Beispieldaten zu den Produkten hinzu Tabelle:

INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);
Erstellen der gespeicherten Funktion

Jetzt, da wir eine Datenbank und eine Tabelle haben, mit der wir arbeiten können, können wir eine gespeicherte Funktion erstellen. Lassen Sie uns eine Funktion namens calcProfit erstellen . Diese Funktion benötigt zwei Eingabeparameter:die Kosten und den Preis von etwas. Es berechnet den Gewinn, indem es die Kosten vom Preis abzieht, und gibt dann den Wert an den aufrufenden Ausdruck zurück.

Um diese gespeicherte Funktion zu erstellen, führen Sie die folgenden MySQL-Anweisungen aus:

DELIMITER $$
CREATE FUNCTION calcProfit(cost FLOAT, price FLOAT) RETURNS DECIMAL(9,2)
BEGIN
  DECLARE profit DECIMAL(9,2);
  SET profit = price-cost;
  RETURN profit;
END$$
DELIMITER ;
Das TRENNZEICHEN Der Befehl am Anfang dieser Anweisungen verhindert, dass MySQL die Funktionsdefinition zu früh verarbeitet. Das TRENNZEICHEN Der Befehl am Ende dieser Anweisungen kehrt zur normalen Verarbeitung zurück.
Verwendung der gespeicherten Funktion

Sie können nun die gespeicherte Funktion in einer Datenbankabfrage ausführen. Die folgende SQL-Anweisung zeigt, wie das geht:

SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;

Diese SQL-Anweisung gibt die folgenden Ergebnisse zurück:

+---------+--------------+-----------+------------+--------+
| prod_id | prod_name    | prod_cost | prod_price | profit |
+---------+--------------+-----------+------------+--------+
|       1 | Basic Widget |      5.95 |       8.35 |   2.40 |
|       2 | Micro Widget |      0.95 |       1.35 |   0.40 |
|       3 | Mega Widget  |     99.95 |        140 |  40.05 |
+---------+--------------+-----------+------------+--------+

Wie Sie sehen können, ist der calcProfit Funktion berechnet automatisch den Gewinn (Preis minus Kosten) für jedes Produkt in der Tabelle.

Gespeicherte Prozeduren

Gespeicherte Prozeduren werden manchmal mit gespeicherten Funktionen verwechselt, aber sie unterscheiden sich in einigen wichtigen Punkten. Gespeicherte Prozeduren müssen beispielsweise mit dem CALL aufgerufen werden -Anweisung, während gespeicherte Funktionen direkt in SQL-Ausdrücken verwendet werden können. Sie können gespeicherte Prozeduren auf jedem A2-Hosting-Server definieren und ausführen, der MySQL verwendet.

Die folgenden MySQL-Anweisungen zeigen, wie Sie eine sehr einfache gespeicherte Prozedur namens procedureTest erstellen . Dieses Verfahren führt eine einfache Suche nach den Produkten durch Tabelle, die wir im obigen Beispiel für gespeicherte Funktionen verwendet haben. Obwohl diese Prozedur keinen großen praktischen Nutzen hat, demonstriert sie die korrekte Syntax und Struktur zum Deklarieren einer gespeicherten Prozedur:

DELIMITER $$
CREATE PROCEDURE procedureTest()
BEGIN
  SELECT prod_name FROM products;
END$$
DELIMITER ;

Um die gespeicherte Prozedur auszuführen, verwenden Sie die folgende MySQL-Anweisung:

CALL procedureTest() \G
Wenn Sie phpMyAdmin verwenden, geben Sie die vorherige MySQL-Anweisung ohne \G ein Option am Ende.

Weitere Informationen

Weitere Informationen zu gespeicherten Prozeduren und Funktionen in MySQL finden Sie unter http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html.