Mysql proceduri stocate (cod sursă) - produse software

Pentru mult timp m-am chinuit de această întrebare. Literatura de pe Internet este mică, mai ales în limba rusă. A trebuit să întreb în jurul valorii de forumuri străine, să intru mai adânc în manuale și să clarific câteva momente de neînțeles pentru mine. Deci, pe scurt despre procedurile stocate în MySQL.

Proceduri memorate - ce este?

Procedurile memorate au apărut de la versiunea 5 a MySQL. Ele vă permit să automatizați procese complexe la nivelul MySQL, mai degrabă decât să utilizați scripturi externe pentru acest lucru. Acest lucru ne oferă cea mai mare viteză de execuție, deoarece Nu conducem un număr mare de solicitări, ci numai o singură dată când sunăm această procedură (sau funcție).

Ce este necesar pentru asta? Instalați serverul MySQL versiunea 5 sau mai mare (dev.mysql.com/downloads). Proceduri Puteți crea interogări, cum ar fi linia de comandă MySQL, dar pentru comoditatea de consultanță pentru a descărca MySQL GUI Tools (dev.mysql.com/downloads/gui-tools). Acest pachet include trei programe - MySQL Administrator, MySQL Query Browser si MySQL Migration Toolkit. Avem nevoie de primele două. (Deși puteți obține unul MySQL Query Browser, dar toate aceste $$ în proceduri stocate pot fi uneori confuz).

Prima procedură stocată

Deci, MySQL deschis de Administrator, conectați la serverul MySQL și de a crea o nouă schemă (baze de date), faceți clic pe cataloage, selectați Creare schima în scheme (Ctrl + N). Sunați-l într-un fel (de exemplu, db). Deschideți sistemul nou creat, selectați fila proceduri stocate, și apoi faceți clic pe Creare stocate Proc. Sunați procedura de dvs. procedură1. Corpul procedurii (între BEGIN și END) se înregistrează după cum urmează:

Și faceți clic pe Executare SQL - procedura este creată. Deschideți MySQL Query Browser, selectați schema dvs. (db) și introduceți următoarea interogare:

Variabile în MySQL

Pentru a extrage unele beneficii din procedurile stocate în MySQL, va trebui să lucrați cu variabile. Deoarece acest lucru nu este în sfera de aplicare a acestui articol, voi arăta doar câteva exemple.

Variabile simple

Diferența dintre variabilele simple și sistemul este că variabilele de sistem sunt accesibile din afara procedurii stocate. Adică, pentru a extrage unele date de care aveți nevoie pentru a utiliza sistemul, variabilele care sunt necesare numai în cadrul procedurii ar trebui să fie simple.

Parametrii în procedurile stocate

Și aici, totul este foarte simplu. Schimbați prima linie care declară procedura:

Aici, cuvântul cheie IN indică faptul că parametrul este inbound. Apoi, cu acest parametru, lucrăm cu variabila obișnuită din cadrul procedurii:

Condiții, cicluri. DACĂ, MAI MULT

Condițiile și ciclurile pe care le veți avea nevoie cu siguranță la scrierea procedurilor complexe stocate, dar nu mă voi concentra asupra acestui subiect. Cred că aveți cel puțin câteva abilități de programare pe care le aveți, așa că vă voi arăta numai sintaxa.

Un exemplu simplu

O bună utilizare a procedurilor stocate este atunci când trebuie să combinați mai multe solicitări într-unul, de exemplu adăugând un subiect la forum și sporind numărul total de subiecte. Să presupunem masa de fire

Aici titlul va fi titlul unui subiect nou. Ei bine, și tabelul, de exemplu, cu variabile statistice diferite ale unui site, inclusiv cantitatea generală de teme în formă.

Aici se pare că totul este clar, să presupunem că avem o intrare acolo cu nume = fire și valoare = 0. Creați o nouă procedură de stocare procedură2.

Nu există nimic de explicat, doar două solicitări au fost combinate într-una. Acum putem numi această procedură în felul următor:

Astfel, în loc de a trece două sau mai multe solicitări (de exemplu prin intermediul PHP), putem trimite unul - pentru a optimiza, cod curat și pot fi schimbate în orice moment, fără a afecta celelalte script-uri.

Cursoare (cursoare MySQL)

Cursorii vă permit să parcurgeți toate rezultatele interogării. Este dificil să explic în teorie, o voi arăta în practică. Adăugați încă o masă în baza noastră de date - rezultate:

Aici vom scrie toate etichetele din toate subiectele. Procedura stocată va arăta cam așa:

În detaliu. Procedura va trece prin fiecare subiect, fiecare etichetă va rupe prin tabela de etichete, iar dacă această etichetă lipsește, ea o va adăuga.

Deschideți cursorul și obțineți prima înregistrare. Următorul în buclă - Selectați numărul de potriviri din tabela de etichete pentru eticheta curentă și puneți rezultatul în variabila iCount. Dacă nu există rezultate, introduceți o etichetă nouă cu INSERT.

În cele din urmă, închideți cursorul și ieșiți din procedură. Ei bine, asta e tot.

Recuperarea datelor

Să reamintim variabilele sistemului și să luăm în considerare o altă manipulare a tabelelor noastre - să obținem numărul total de etichete și subiecte. Să mergem direct la procedură: