SQL servera saglabātās procedūras

Saglabātās procedūras nodrošina augstas efektivitātes un drošības priekšrocības

Microsoft SQL Server nodrošina glabāšanas procedūras mehānismu, lai vienkāršotu datu bāzes izstrādes procesu, grupējot Transact-SQL paziņojumus pārvaldāmajos blokos. Saglabātās procedūras novērtē lielākā daļa SQL Server izstrādātāju, kuri uzskata, ka efektivitāte un drošības priekšrocības, ko viņi gūst, ir labi vērsti uz sākotnējiem ieguldījumiem laikā.

Ieguvumi no saglabāto procedūru izmantošanas

Kāpēc attīstītājam jāizmanto glabātas procedūras?

Šeit ir šīs tehnoloģijas galvenās priekšrocības:

Saglabātās procedūras ir līdzīgas lietotāja definētām funkcijām, bet ir smalkas atšķirības.

Struktūra

Saglabātās procedūras ir līdzīgas konstrukcijām, kuras redzamas citās programmēšanas valodās.

Tie pieņem datus ievades parametru veidā, kas norādīti izpildes laikā. Šie ieejas parametri (ja tie tiek īstenoti) tiek izmantoti, lai izpildītu virkni paziņojumu, kas rada kādu rezultātu. Šis rezultāts tiek atgriezts zvanīšanas videi, izmantojot ierakstu komplektu, izvades parametrus un atgriešanās kodu.

Tas var izklausīties kā kumoss, bet jūs atradīsit, ka glabā procedūras ir diezgan vienkārši.

Piemērs

Apskatīsim praktisku piemēru, kas saistīts ar tabulas nosaukumu, kas norādīts šīs lapas apakšdaļā. Šī informācija tiek atjaunināta reālajā laikā, un noliktavas vadītāji pastāvīgi pārbauda to noliktavās uzglabāto produktu daudzumu, kas ir pieejami sūtījumam. Agrāk katrs vadītājs darbosies ar šādiem jautājumiem līdzīgus jautājumus:

SELECT Produkts, daudzums
NO inventarizācijas
KUR VANA = 'FL'

Tas izraisīja neefektīvu veiktspēju SQL Server. Katru reizi, kad noliktavas menedžeris izpildīja vaicājumu, datu bāzes serveris bija spiests pārkvalificēt vaicājumu un izpildīt to no nulles. Tas arī prasīja, lai noliktavas vadītājs zinātu SQL un atbilstošas ​​atļaujas, lai piekļūtu tabulas informācijai.

Tā vietā procesu var vienkāršot, izmantojot glabāto procedūru. Tālāk ir parādīts procedūras kods, ko sauc par sp_GetInventory, kas izgūst inventāra līmeņus konkrētai noliktavai.

CREATE PROCEDURE sp_GetInventory
@location varchar (10)
AS
SELECT Produkts, daudzums
NO inventarizācijas
KUR WAREHOUSE = @ atrašanās vieta

Pēc tam Florida noliktavas menedžeris var piekļūt krājumu līmeņiem, izdodot komandu:

EXECUTE sp_GetInventory "FL"

Ņujorkas noliktavas pārvaldnieks var izmantot to pašu glabā procedūru, lai piekļūtu šīs teritorijas inventarizācijai:

EXECUTE sp_GetInventory "NY"

Piešķirtais ir vienkāršs piemērs, bet abstrakcijas priekšrocības ir redzamas šeit. Noliktavas vadītājam nav nepieciešams izprast SQL vai procedūras iekšējās darbības. No veiktspējas perspektīvas glabāto procedūru var radīt brīnumi. SQL Server vienu reizi izpilda izpildes plānu un pēc tam atkārto to, to izpildot, pieslēdzot atbilstošiem parametriem.

Tagad, kad esat uzzinājis glabāto procedūru priekšrocības, izejiet tur un izmantojiet tos.

Izmēģiniet dažus piemērus un novērtējiet sasniegtos veiktspējas uzlabojumus - jūs būsiet pārsteigti!

Inventāra tabula

ID Produkts Noliktava Daudzums
142 Zaļās pupiņas NY 100
214 Zirņi FL 200
825 Kukurūza NY 140
512 Lima pupiņas NY 180
491 Tomāti FL 80
379 Arbūzs FL 85