Skip to main content

"SQL Server" saugomų procedūrų kūrimas

Anonim

Microsoft SQL Server pateikia saugomos procedūros mechanizmą, kuris supaprastina duomenų bazių kūrimo procesą, suskirstant Transact-SQL pareiškimus į valdomus blokus. Saugomos procedūros yra vertinamos daugelio SQL serverių kūrėjų, kurie mano, kad efektyvumas ir saugumo nauda, ​​kurią jie gaus, yra vertingos iš anksto investuoti laiku.

Saugomų procedūrų naudojimo privalumai

Kodėl kūrėjas turėtų naudoti saugomas procedūras?

Štai pagrindiniai šios technologijos privalumai:

  • Iš anksto sudarytas vykdymas: SQL Server vienu metu kaupia kiekvieną saugomą procedūrą ir iš naujo naudoja vykdymo planą. Tai sukelia milžinišką našumo padidėjimą, kai saugomos procedūros vadinamos pakartotinai.
  • Sumažintas kliento / serverio srautas: Jei jūsų aplinkoje tinklo pralaidumas yra susirūpinimas, jums bus malonu sužinoti, kad saugomos procedūros gali sumažinti ilgas SQL užklausas į vieną eilutę, kuri perduodama per laidą.
  • Efektyvus kodo ir programavimo abstrakcijos pakartotinis naudojimas: Išsaugotas procedūras gali naudoti keli vartotojai ir klientų programos. Jei naudosite juos suplanuotu būdu, pamatysite, kad kūrimo ciklas trunka mažiau laiko.
  • Patobulinta saugos kontrolė: Galite suteikti vartotojams teisę vykdyti saugomą procedūrą nepriklausomai nuo pagrindinių lentelių leidimų.

Išsaugotos procedūros yra panašios į vartotojo apibrėžtas funkcijas, tačiau yra smulkių skirtumų.

Struktūra

Išsaugotos procedūros yra panašios į konstrukcijas, matomas kitose programavimo kalbose.

Jie priima duomenis įvesties parametrų forma, kurie nurodyti vykdymo metu. Šie įvesties parametrai (jei jie yra įgyvendinami) naudojami vykdant eilę teiginių, kurie sukuria tam tikrą rezultatą. Šis rezultatas grąžinamas į skambinimo aplinką naudojant įrašų rinkinį, išvesties parametrus ir grąžinimo kodą.

Tai gali atrodyti kaip garsiai, bet jūs pamatysite, kad saugomos procedūros iš tiesų yra gana paprasta.

Pavyzdys

Pažiūrėkime į praktinį pavyzdį, susijusį su šio skelbimo puslapio apačioje pateikta lentelė. Ši informacija yra atnaujinama realiuoju laiku, o sandėlio valdytojai nuolat tikrina jų sandėlyje sandėliuojamų ir tiekiamų prekių lygius. Anksčiau kiekvienas valdytojas paleisdavo tokias užduotis:

PASIRINKITE Produktą, kiekįIš inventoriausKUR sandėlis = "FL"

Dėl to SQL Server neefektyviai veikė. Kiekvieną kartą, kai sandėlio valdytojas įvykdė užklausą, duomenų bazės serveris buvo priverstas pakartotinai sukonfigūruoti užklausą ir jį vykdyti iš naujo. Ji taip pat reikalavo, kad sandėlio valdytojas žinotų SQL ir atitinkamus leidimus, kad galėtumėte pasiekti lentelės informaciją.Vietoj to procesas gali būti supaprastintas naudojant saugomą procedūrą. Štai proceso, vadinamo sp_GetInventory, kodas, skirtas gauti tam tikro sandėlio atsargų lygius.

Kurti PROCEDŪRA sp_GetInventory@location varchar (10)ASPASIRINKITE Produktą, kiekįIš inventoriausKUR sandėlis = @ vieta

Floridos sandėlio vadybininkas gali pasiekti atsargų lygius, išduodamas komandą:

EXECUTE sp_GetInventory "FL"

Niujorko sandėlio valdytojas gali naudoti tą patį saugomą procedūrą, kad pasiektų tos srities inventorių:

EXECUTE sp_GetInventory "NY"

Manoma, kad tai yra paprastas pavyzdys, bet abstrakcijos naudą galima pamatyti čia. Sandėlio valdytojui nereikia suprasti SQL ar vidinės procedūros. Iš veikimo perspektyvos saugoma procedūra veikia stebuklai. SQL Server vieną kartą atlieka vykdymo planą ir iš naujo jį iš naujo įveda, įjungiant tinkamus parametrus vykdymo metu.Dabar, kai sužinojote saugomų procedūrų privalumus, išeikite ten ir naudokitės jais.

Išbandykite keletą pavyzdžių ir išmatuokite pasiektus pasiekimus - jūs būsite nustebinti!

Inventoriaus lentelė

IDProduktasSandėlisKiekis
142Žaliosios pupelėsNY100
214ŽirniaiFL200
825KukurūzaiNY140
512Lima pupelėsNY180
491PomidoraiFL80
379ArbūzasFL85