Questo articolo descrive come creare ed eseguire funzioni e procedure memorizzate MySQL sul tuo account A2 Hosting. È possibile utilizzare funzioni e procedure memorizzate per un'ampia gamma di scenari. Ad esempio, funzioni e procedure archiviate ben progettate possono migliorare la sicurezza del database, migliorare l'integrità dei dati e aumentare le prestazioni.
Funzioni memorizzate
Le funzioni memorizzate in MySQL forniscono un modo potente e flessibile per manipolare ed elaborare i dati. Puoi definire ed eseguire funzioni memorizzate su qualsiasi server A2 Hosting che utilizza MySQL.
Configurazione di un database di test
Per dimostrare un esempio di base di funzioni memorizzate, iniziamo creando un database che possiamo utilizzare a scopo di test. Nella seguente istruzione SQL, sostituisci nome utente con il nome utente del tuo account:
CREATE DATABASE username_test;Puoi eseguire il comando SQL precedente (e i seguenti comandi SQL) dalla riga di comando usando lo strumento MySQL o nel tuo browser web usando phpMyAdmin.
Se stai usando phpMyAdmin, fai clic sul nome nome utente _test per selezionare il database. Altrimenti, se stai usando il programma da riga di comando mysql, digita la seguente istruzione SQL:
USE username_test;
Quindi, crea una tabella nel nome utente _prova database denominato prodotti . A tale scopo, eseguire la seguente istruzione SQL:
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));
La seguente istruzione SQL aggiunge alcuni dati di esempio ai prodotti tabella:
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);
Creazione della funzione memorizzata
Ora che abbiamo un database e una tabella con cui lavorare, siamo pronti per creare una funzione memorizzata. Creiamo una funzione chiamata calcProfit . Questa funzione accetta due parametri di input:il costo e il prezzo di qualcosa. Calcola il profitto sottraendo il costo dal prezzo, quindi restituisce il valore all'espressione chiamante.
Per creare questa funzione memorizzata, esegui le seguenti istruzioni MySQL:
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 ;Il DELIMITORE Il comando all'inizio di queste istruzioni impedisce a MySQL di elaborare la definizione della funzione troppo presto. Il DELIMITORE il comando alla fine di queste istruzioni riporta l'elaborazione alla normalità.
Utilizzo della funzione memorizzata
È ora possibile eseguire la funzione memorizzata in una query del database. La seguente istruzione SQL mostra come eseguire questa operazione:
SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;
Questa istruzione SQL restituisce i seguenti risultati:
+---------+--------------+-----------+------------+--------+ | 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 | +---------+--------------+-----------+------------+--------+
Come puoi vedere, il calcProfit la funzione calcola automaticamente il profitto (prezzo meno il costo) per ogni prodotto nella tabella.
Procedure archiviate
Le stored procedure vengono talvolta confuse con le funzioni memorizzate, ma sono diverse per alcuni aspetti importanti. Le stored procedure, ad esempio, devono essere richiamate con CALL istruzione, mentre le funzioni memorizzate possono essere utilizzate direttamente nelle espressioni SQL. Puoi definire ed eseguire stored procedure su qualsiasi server A2 Hosting che utilizza MySQL.
Le seguenti istruzioni MySQL mostrano come creare una stored procedure molto semplice denominata procedureTest . Questa procedura esegue una semplice ricerca sui prodotti tabella che abbiamo usato nell'esempio della funzione memorizzata sopra. Sebbene questa procedura non abbia molto uso pratico, mostra la sintassi e la struttura corrette per dichiarare una procedura memorizzata:
DELIMITER $$ CREATE PROCEDURE procedureTest() BEGIN SELECT prod_name FROM products; END$$ DELIMITER ;
Per eseguire la procedura memorizzata, utilizzare la seguente istruzione MySQL:
CALL procedureTest() \GSe stai usando phpMyAdmin, digita l'istruzione MySQL precedente senza \G opzione alla fine.
Maggiori informazioni
Per ulteriori informazioni sulle procedure e le funzioni memorizzate in MySQL, visitare http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html.