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:
- Iepriekš kompilēta izpilde: SQL Server katru reizi apkopo katru glabāto procedūru un pēc tam atkal izmanto izpildes plānu. Tas nodrošina milzīgu veiktspēju, ja glabā procedūras tiek sauktas atkārtoti.
- Samazināta klienta / servera satiksme: Ja jūsu vidē ir bažas par tīkla joslas platumu, jūs labprāt uzzināsiet, ka glabā procedūras var samazināt ilgtermiņa SQL vaicājumus vienai rindai, kas tiek nosūtīta pa vadu.
- Koda efektīva atkārtotā izmantošana un programmu ieguve: Saglabātās procedūras var izmantot vairāki lietotāji un klientu programmas. Ja jūs tos izmantosiet plānotā veidā, jūs atradīsiet, ka izstrādes cikls aizņem mazāk laika.
- Uzlabota drošības kontrole: Jūs varat piešķirt lietotājiem atļauju izpildīt glabāto procedūru neatkarīgi no pamata tabulas atļaujām.
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, daudzumsNO inventarizācijasKUR 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. Pēc tam Florida noliktavas menedžeris var piekļūt krājumu līmeņiem, izdodot komandu: Ņujorkas noliktavas pārvaldnieks var izmantot to pašu glabā procedūru, lai piekļūtu šīs teritorijas inventarizācijai: 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 tabulaCREATE PROCEDURE sp_GetInventory@location varchar (10)ASSELECT Produkts, daudzumsNO inventarizācijasKUR WAREHOUSE = @ atrašanās vietaEXECUTE sp_GetInventory "FL"EXECUTE sp_GetInventory "NY"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












