Le funzioni memorizzate in MySQL vengono utilizzate per incapsulare calcoli o operazioni con record e campi di dati presi da una query SQL e sono attività comuni o regole di business.
Un grande vantaggio è che sono riutilizzabili e il linguaggio di programmazione in cui vengono sviluppate le funzioni è attraverso istruzioni SQL e strutture condizionali o ripetitive.
A differenza di una procedura memorizzata, è possibile utilizzare una funzione memorizzata nelle istruzioni SQL in cui si utilizza un'espressione che consente di creare regole condizionali.
Vediamo un esempio creiamo un database di una scuola:
CREA DATABASE `college`Quindi creiamo una tabella con i punteggi dei test degli studenti
- - Struttura della tabella per la tabella `examnotes` - CREATE TABLE` examnotes` (`id` INT (11) NOT NULL AUTO_INCREMENT,` idalumno` INT (11) NOT NULL, `material id` INT (11) NOT NULL, `note1 ` DECIMAL (10,2) NOT NULL,` note2` DECIMAL (10,2) NOT NULL, `note3` DECIMAL (10,2) NOT NULL,` media` DECIMAL (10,2) NOT NULL, `state` VARCHAR (100) NULL DEFAULT NULL, PRIMARY KEY (` id`)) COLLATE = 'latin1_swedish_ci' ENGINE = InnoDB - Indici della tabella `notaseams` - ALTER TABLE` notasetest` ADD PRIMARY KEY (`id` ); Successivamente aggiungiamo alcuni dati alla tabella examnotes - Dump dei dati per la tabella `notasensam` INSERT INTO` notation exam` (`id`,` idalumno`, `subjectid`,` note1`, `note2`,` note3`, ` media`,` stato`) VALORI (1, 1000, 1, '8.00', '9.25', '7.00', '0.00', ''), (2, 1001, 1, '6.33', '8.50' , '8.00', '0.00', ''), (3, 1002, 1, '10 .00 ',' 7.50 ',' 8.33 ',' 0.00 ',' '), (4, 1003, 2,' 4.50 ' , '2.00', '5.50', '0.00', ''), (5, 1004, 1, '3.50', '2.00', '4.00', '0.00', '');
Successivamente, creeremo una funzione memorizzata che esaminerà l'intera tabella dei voti e calcolerà il voto medio per ogni studente per materia e aggiornerà la tabella per indicare se è Pass o Fail.
Possiamo creare la funzione da Phpmyadmin o da qualsiasi editor che ci permetta di scrivere codice SQL;
CREATE DEFINER = `root` @` localhost` PROCEDURA `calcola media` () LANGUAGE SQL NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN / * dichiaro variabili per la funzione * / DECLARE final BOOL DEFAULT FALSE; DICHIARA ID INT; DICHIARARE INT studente; DICHIARA INT materia; DICHIARA nota1 FLOAT; DICHIARA nota2 FLOAT; DICHIARA nota3 FLOAT; DICHIARA GALLEGGIANTE del ballo di fine anno; / * dichiaro un recordset o cursore con i dati della query sql * / DECLARE rslist CURSOR FOR SELECT id, id studente, id materiale, note1, note2, note3 dalle note del test; / * Dichiaro una variabile per rilevare la fine di un ciclo ripetuto DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET final = TRUE; /* apro il recordset per avviare l'attraversamento dei dati con un loop * / OPEN rslista; ciclo: LOOP FETCH rslist INTO id, studente, materia, grado1, grado2, grado3; / * calcolo la media * / set avg = (nota1 + nota2 + nota3) / 3; / * lo salvo aggiornando la tabella * / aggiornamento notazione esame set media = d dove idalumno = studente e idmateria = materia; / * Se il voto è maggiore o uguale a 7 aggiorno lo stato come Approvato altrimenti lo stato sarà Fallito * / SE av> = 7 THEN aggiorna notaseams set status = 'Approvato' dove idalumno = studente e idmateria = materia; ELSE aggiornamento notazione esame set status = 'Fallito' dove id studente = studente e id soggetto = soggetto; FINISCI SE; IF finalTHEN CLOSE rslist; LASCIA ciclo; FINISCI SE; FINE CICLO; FINEQuindi possiamo eseguire la funzione utilizzando il seguente comando:
CALL `calcola media` ()Il risultato sarà l'aggiornamento automatico delle colonne media e stato.
Le funzioni memorizzate in MySQL vengono normalmente utilizzate per calcoli e operazioni, mentre le procedure memorizzate vengono normalmente utilizzate per l'esecuzione di regole aziendali.
Le funzioni di solito non influiscono sulla struttura del database, ma per eseguire alcuni calcoli, confrontare e restituire un risultato o modificare un dato in una tabella nel database, possiamo anche creare un trigger per controllare o controllare le modifiche apportate da una funzione.
Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo