Krijimi i procedurës SQL që do të ruhet. Llojet e procedurave që ruhen. Menaxhimi i të drejtave të aksesit Gnuchka

22 episode

Njohuritë e mia për të shkruar në programin kryesor Klient/Server WinForms janë të thjeshta, tek e cila kam ardhur:

Procedurat Vykoristovuvat për të cilat kujdeset:

  • Për të qenë një punëtor robotik i palosshëm. Nëse zgjidhni të punoni, do t'ju duhet efektivisht një kursor tabele ose një temp, prandaj thirrni mënyrën më të mirë për ta ekzekutuar atë në SQL Server.
  • Mund t'ju duhet të bllokoni aksesin në të dhëna. Nëse nuk jepni akses në tabelat e koristuvaçave (si rolet ashtu edhe të tjerat), mund të bindeni se e vetmja mënyrë për të ndërvepruar me ta është përmes sipërmarrjes së përbashkët, e cila krijohet.

Fitorja për kërkesa të veçanta:

  • Për CRUD, nëse nuk keni nevojë të lidhni aksesin në të dhëna (bëjeni në anën tjetër).
  • Për shakatë më të thjeshta. Krijimi i PS-së për kritere jopersonale për një shaka - kjo është e gjitha ajo palosje në shërbim. Nëse mund të krijoni një kërkesë për poke suedeze, mbyllni syrin.

Per shumicen e suplementeve te mi fitueshem si SP, pra ad-hoc sql, dua te di qe kam SP vicorist gjithnje e me pak, qelbet ne fund me kodin si C #, vetem me shume kontroll, test dhe përmirësuar. Unë rekomandoj bi-wirezim ad-hoc sql sepse nuk e dini arsyen specifike.

Procedurat e ruajtjes - një kontratë për një program sigurie, i cili i përmbledh ato, të drejtpërdrejta kundrejt bazave të të dhënave. Kodi për procedurat dhe vetë skema e bazës së të dhënave mund të ndryshohet pa kompiluar, zhvilluar kodin, në mënyrë që të dhënat e procedurës të mbeten të pandryshuara.

Kur pyesni programin tuaj, do t'i tregoni vetes qartë modelin tuaj të të dhënave.

Epo, nuk është gjithashtu një praktikë e mirë të krijoni thjesht procedura kursimi, si kërkesat CRUD për tabelat e lëkurës në bazën tuaj të të dhënave, kështu që është më e lidhur ngushtë. Natyra e procedurës është për shkak të rëndë, të trashë.

Mendoj se ky është konflikti kryesor mes njerëzve, pasi është faji i tyre për të përmirësuar bazën e të dhënave të njerëzve, pasi është zgjerimi i ndërfaqes së korrespondentit.

Si një person me të dhëna, nuk i hodha një sy punës pas bazës së të dhënave, përpara se të kalonin përmes kërkesave adhoc, kështu që është e rëndësishme që ata të mësojnë ose të kujdesen në mënyrë efektive. Si mund të zbuloj se çfarë mund të kontribuoj në ndryshimin e skemave? Për më tepër, nuk mendoj se koristovatëve duhet t'u jepet akses direkt në tabelat e bazës së të dhënave me siguri pasqyruese (dhe nuk mund të sulmoj vetëm injeksionet SQL, por edhe faktin që kontrolli i brendshëm bazë, i cili nuk lejon të drejta dhe vimagaє vіd usіh koristuvachіv vikoristovyte vetëm procs, të njohura për programin, schob zapobіgti mozhlivogo shahraystvo.

Bazat e të dhënave janë të orientuara nga objekti dhe kodi që duket i mirë nga një këndvështrim i orientuar nga objekti mund të shkatërrohet plotësisht nga pikëpamja e të dhënave bazë.

Shitësit tanë me pakicë na kujtojnë, për hir të tij, se e gjithë aksesi ynë në bazat e të dhënave krijohet përmes procs, në mënyrë që ne të përshpejtojmë ndjeshëm korrigjimin e faljeve, në mënyrë që të gënjejmë të dhënat, dhe më pas thjesht të ekzekutojmë proc në punë mjedisi, dhe të mos krijoni një kod të ri dhe rikompiloni dhe ripërfitoni në virobnitstvo. Ne besojmë se të gjitha proceset tona ishin në duart e shoferit, kështu që kontrolli i xherelit nuk është aspak problem. Edhe pse vera nuk është në Subversion, dbas i verës shihet periodikisht dhe nuk ka mbështetje për Kontrollin e Burimit.

Ruajtja e procedurave, çmendurisht, ardhja... erë e keqe e përpiluar, duke hedhur planin para kallirit të punës, dhe ju mund t'i ruani të drejtat për to.

Nuk e kuptoj problemin me kodin e daljes në procedurën që po ruhet. Mund t'i kontrolloni lehtësisht, edhe nëse keni pak disiplinë.

Gjithmonë filloni nga skedari .sql, i cili është thelbi i procedurës për të ruajtur. Posto yogo në keruvannya me versione pasi ke shkruar kodin. Herën tjetër, nëse doni të modifikoni procedurën tuaj, atë që ruhet, do të hiqni elementin tuaj të kontrollit të jashtëm, poshtë bazës së të dhënave. Nëse e ndiqni këtë, do të keni të njëjtin menaxhim të mirë si kodi juaj.

Do të doja të citoja Tom Kyte nga Oracle këtu... Ky është rregulli për të shkruar kodin... edhe nëse është paksa mospërputhje, por unë e di më mirë, mendoj.

Shtesa jonë ka një top kodi, të cilin mund ta përdorim për të kërkuar (dhe ndonjëherë na duhet një procedurë që ruhet). Tse na lejon:

  • lehtësisht otrimat të gjithë pyesni pіd orë keruvannya versionet
  • robiti të gjitha ndryshimet për kujdesin e lëkurës për serverë të ndryshëm të bazës së të dhënave
  • përfshin përsëritjen e të njëjtit kod përmes kodit tonë

Kontrolli i aksesit zbatohet në topin e mesëm, dhe jo në bazën e të dhënave, kështu që nuk kemi nevojë për procedura që ruhen. E gjithë bota është rruga e mesme midis kërkesave të veçanta dhe procedurave që trajtohen.

Është e nevojshme të ndryshohen argumentet për të dyja procedurat, të cilat ruhen si në depo qendrore, por (potencialisht) të rëndësishme për t'u transferuar, dhe specialitetet janë më të lehta për t'u gjetur, erëra e keqe me kodin tuaj, por edhe erërat mund të njihen më mirë. në kod.

Argumenti se procedurat që ruhen janë më efektive, mos u hakmerr më. teksti i dërguar

Këshilla e Google për procedurën që ndërmerret kundrejt Dynamic Query do t'ju tregojë disa argumente në çdo rast dhe, është më mirë që ju të pranoni vendimin tuaj.

Deyakі rechі, për yaki është e nevojshme të mendoni: Kush ka nevojë për procedura, çfarë po kursen ata, gjithsesi?

Është e qartë se ushqimi i nevojave tuaja të fuqisë është i rëndësishëm, por është akoma më e rëndësishme të mendoni për ato që, me pijet më të veçanta në mes, të orientuara nga pjesa më e madhe, janë të sigurta. Kujdes nga parametrizimi juaj dhe ndiqni mospërputhjet tipike siç janë injeksionet SQL.

Ruajtja e procedurave është një mrekulli, sepse ato mund të ndryshohen pa ripërpilim. Do të përpiqem t'i fitoj sa më shumë.

Unë jam një zëvendës ad-hoc për pijet, të cilat gjenerohen në mënyrë dinamike bazuar në prezantimin e një koristuvach.

Procs për arsye të tjera, dhe është gjithashtu më e lehtë të përmirësohet proc për profile shtesë ose pjesë të proc. Në këtë renditje, nuk keni nevojë t'i tregoni askujt për nisjen e programeve tuaja, për të zbuluar se çfarë po dërgohet në serverin SQL

Nëse doni të pyesni ad-hoc, ndërroni mendjen se ato janë të parametrizuara

Parametrimi i SQL ose SPROC... nuk ka shumë rëndësi për sa i përket performancës... mund të kërkoni optimizimin e njërit prej tyre.

Për mua, pjesa tjetër e avantazhit të SPROC është se unë mund të çaktivizoj shumë të drejta për të menaxhuar të drejtat SQL, thjesht jepni të drejtat e mia për t'u identifikuar në sprocs... kështu që ju mund të fitoni SQL të Parametizuar, të identifikoheni, të lidheni me rreshtin tuaj të lidhjes , ndoshta më shumë (regjistrimi i çdo lloj operatori për të zgjedhur në njërën nga tabelat, në të cilën ata kanë akses, për shembull).

Si më parë, unë kam favorizuar SQL të parametrizuar, duke dashur të...

Argumenti i produktivitetit sproc є spirnim - 3 RDBM-të e sipërme rifitojnë planin për pije dhe orët ditore. Yogo u dokumentua... Çfarë është ende 1995?

Megjithatë, zbatimi i SQL në programin tuaj është gjithashtu një dizajn i keq - mirëmbajtje e kodit, ndoshta jo një koncept mjaft i mirë për të pasurit.

Po kështu, programi mund të fillojë nga e para për ORM shtesë (shtesa nga fusha e gjelbër larg kіlkoh!), tse vіdminny vibrіr, oskіlki modeli i klasës suaj keruє modelin tuaj DB që vetëm një orë.

Meqenëse struktura ORM nuk është e disponueshme, ne kemi hakuar një pidhide hibrid për të krijuar një skedar XML të burimeve SQL për të kërkuar një rresht të SQL për të nevojshme (erë e keqe më pas ruhet në memorien e fshehtë nga infrastruktura e burimeve). Ashtu si SQL do të kërkojë disa manipulime të vogla që janë të ndryshme nga kodi, do të kërkojë gjithashtu një manipulim të madh të një rreshti SQL, të cilin ne e rimendojmë.

Ky pidkhid hibrid e bën më të lehtë menaxhimin e shitësve me pakicë (ndoshta, nëse jam më i vogël, copëzat e ekipit tim mund të pastrohen, në mënyrë që të mund të lexoj planin për kërkesën), dhe laringu është thjesht një riverifikim i SVN. Për më tepër, unë do t'ju kërkoj të ndërroni RDBM - thjesht zëvendësoni skedarin e burimit SQL (jo aq i thjeshtë sa një mjet ORM, natyrisht, por funksionon me sisteme të vjetra ose një bazë të dhënash, e cila nuk mbështetet)

Mendimi im është se 90% e kërkesave dhe/ose procedurave që ruhen nuk janë përgjegjëse për caktimin e një takimi (të pranuara, me dorë).

Qasja në të dhëna mund të gjenerohet automatikisht. Ju mund të zgjidhni nëse dëshironi të gjeneroni procedura në mënyrë statike në kohën e përpilimit ose në mënyrë dinamike në kohën e ndërtimit, ose nëse dëshironi të shtoni një kolonë në tabelë (autoriteti i objektit), duhet të ndryshoni vetëm një skedar.

Unë do t'i ruaj të gjitha të dhënat akses kodin e programit, me ç'rast qasja në të dhëna mund të merret direkt nga SQL-kërkesat. Nga ana tjetër, logjika menaxhimi, siç kam vendosur në bazën e të dhënave në pamjen e nxitësve, procedurave të ruajtjes, funksioneve bazë dhe më shumë. Një shembull i faktit që unë respektoj datën e bazës së të dhënave dhe gjenerimin e të dhënave - është e pranueshme që klienti ynë të ketë FirstName dhe LastName. Tani për ndërfaqen koristuvach, nevojitet DisplayName, siç duket nga një logjikë jo e parëndësishme. Për këtë gjeneratë, unë krijoj një procedurë që ruhet, më pas ajo do të niset nga një këmbëz sa herë që rreshti të përditësohet (përndryshe, të dhëna të tjera).

Duket se ka diçka më të pakuptueshme, që qasja në të dhëna është e njëjtë me bazën e të dhënave, dhe gjithçka që ia vlen të aksesosh të dhënat në ato të dhëna është vetë aty. Është thjesht e gabuar, por po drejtoj shumë projekte, si të bërtas nga idetë. Ndoshta një fenomen i tërë lokal.

Në krye të këtij cikli, bota shikonte se si është e mundur të nxirren të dhëna nga tabela, të modifikohen strukturën e saj, të krijohen, modifikohen dhe të shikohen bazat e të dhënave dhe objektet që janë të fshehura në to. Në këtë artikull, ne do të flasim më shumë për objektet që janë tipike për serverin DBMS: njoftimet, nxitësit dhe procedurat që ruhen.

Në artikullin e parë të këtij cikli, botuar në nr. 3'2000 të ditarit tonë, ne treguam se shumica e DBMS-ve të serverit aktual mbështesin njoftimet, aktivizuesit dhe procedurat që ruhen. Paraqitjet mbështeten gjithashtu nga bugatma DBMS, për shembull Access, dBase, Clipper.

Specifikoni që nxitësit dhe procedurat që ruhen duhet të shkruhen në gjuhën e programimit, të cilat janë zgjerime procedurale të gjuhës SQL. Deklaratat e zgjeruara ju lejojnë të përshkruani algoritmet, për shembull, bëni...ndërsa, nëse...atëherë...tjetër, përdoren në vetë gjuhën SQL. Në vіdmіnu od MTIE SQL, karrierës pіdporyadkovuєtsya standarde Yogo protsedurnі rozshirennya nіyak nuk standartizovanі, i rіznі database vikoristovuyut rіznі sintaksichnі konstruktsії realіzatsії të qetë veten algoritmіchnih konstruktsіy, ale, negociuar vіdmіnnostey në sintaksisі rozshiren SQL databazë për rіznih vihodit përtej tsієї stattі.

Për të ilustruar se si është e mundur të shtrembërohet pamja, aktivizuesit dhe procedurat që ruhen, ne zgjodhëm Microsoft SQL Server 7.0 dhe bazën e të dhënave NorthWind, e cila përfshihet përpara grupit të dorëzimit të DBMS.

Para së gjithash, aplikoni, respektoni ata që zbatojnë dhe ruajnë nxitësit dhe procedurat që janë fitimtare në DBMS, mund të konsiderohen se tregojnë këto statistika. Përveç kësaj, për krijimin e objekteve të serverit, lejohen nënat e mëposhtme, sikur të jepet administratori i bazës së të dhënave.

Është gjithashtu domethënëse që disa drejtues ODBC nuk mbështesin ciklin e procedurave, të cilat ruhen nga shtesat e klientit, por kështu e mbështet vetë DBMS. Mbroni në të njëjtën mënyrë procedurat që ruhen, sa më shpejt që të jetë e mundur, mund të eliminohen nga shkaktarët.

Le të shohim faktet, më pas të diskutojmë procedurat që ruhen dhe të përfundojmë duke parë shkaktarët.

Pamja e jashtme

Dorëzimi - tse tabela virtuale, shënoni numrin e kolonave të njërës prej numrit të tabelave. Nuk ka të dhëna reale, vetëm SQL-query i llojit SELECT, që tregon të njëjtat të dhëna dhe nga cilat tabela duhet të merren kur ktheheni në paraqitjen e parë. Z tsієї pikë zoru yavlennya - tse ask, scho zberіgaєtsya.

Shumica e vipadkiv janë paraqitur me fitore për sigurinë e të dhënave. Për shembull, dhjakët e kategorisë coristuvachiv mund të aksesohen para se të shfaqen, por jo në një tabelë, ata mund të formojnë të dhëna; Përveç kësaj, kërkesa SQL mund të vendosë parametrin USER (emri, nën të cilin koristuvach është regjistruar), dhe në këtë rast të dhënat e disponueshme kur të ktheheni në datën do të bien nën emrin e koristuvach.

Më poshtë janë karakteristikat kryesore të manifestimit:

  • yavlennya sillet si një tryezë;
  • manifestuar për të mos hakmarrë të dhënat;
  • Paraqitjet mund të fitojnë më shumë të dhëna nga e njëjta tabelë.

Për të krijuar paraqitje, ne mund të shkulim propozimin SQL CREATE VIEW, ta modifikojmë me propozimin ALTER VIEW dhe ta fshijmë me propozimin DROP VIEW.

Le të shohim deklaratën CREATE VIEW, e cila ju lejon të krijoni një pamje për një bazë të dhënash transmetimi.

KRIJO PARAQITJE propozim

Sintaksa e propozimit për krijimin e një deklarate merr me mend propozimin SQL SELECT me një numër fjalësh kyçe shtesë. Më poshtë është një sintaksë e thjeshtë:

KRIJO PARAQIT emrin e_pamjes SI selektim_deklaratë

Argumenti view_name specifikon emrin e pamjes. Fjala kyçe, e cila përputhet në Microsoft SQL Server, ju lejon të bashkëngjitni tekstin origjinal të propozimit CREATE VIEW në tabelën e syscomments.

Fjala kyçe AS tregon se cila pyetje SELECT është në të vërtetë e zbatueshme kur kthehet përpara paraqitjes. Kujdes se kërkesa nuk mund të zëvendësojë fjalët kyçe ORDER BY, COMPUTE ose COMPUTE BY, INTO dhe nuk mund t'i referohet orarit.

Për të modifikuar deklaratën e krijuar më parë, ndiqni propozimin ALTER VIEW, siç përshkruhet në seksionin fyes.

Propozimi DOP VIEW

Tsya propozim vikoristovuєtsya për vydalannya vyavlennya z da nih. Kini respekt për ata që kur shihen tabelat nga baza e të dhënave, shihen të gjitha deklaratat që i referohen asaj. Vikoristovuyuchi tsyu propozim, ne jemi fajtorë për të thënë im'ya vyavlennya, scho parë. Pasi të shihet, të gjitha informacionet për të renë shihen nga tabelat e sistemit.

Edhe një pikë, nëse duhet ta shihni, mund ta fajësoni për mendjen tuaj që struktura e tabelave, mbi të cilat bazohet, ka ndryshuar pas krijimit të fenomenit. Me këtë pamje, ju mund të shihni vistava dhe ta krijoni atë përsëri për propozimin shtesë KRIJO VIEW.

Krijimi dhe manifestimi vikoristannya

Propozimi CREATE VIEW përdoret për të krijuar një deklaratë që ju lejon të ndryshoni të dhënat, sikur ato t'u jepeshin këngëtarëve. Parashtresat krijohen në bazën aktuale të të dhënave dhe mblidhen si objekt.

Mënyra më e mirë për të krijuar një paraqitje është të krijoni një pyetje SELECT dhe, pasi e keni keqinterpretuar atë, shtoni pjesën që mungon në propozimin CREATE VIEW. Le t'i hedhim një sy tekstit dalës të deklaratës së produkteve sipas kategorisë në bazën e të dhënave NorthWind (Lista 1).

Rreshti i parë, me shkronja të zeza, është vendi ku propozimi SQL përdoret për të krijuar deklaratën SELECT, e cila fiton robotin mbi zgjedhjen e të dhënave. Klauzola SELECT për t'u zbatuar në këto të dhëna zgjedh fushat nga dy tabela - fusha Emri i kategorisë nga tabela KATEGORIES dhe emri i produktit, sasia për njësi, njësi në stok, fushat e ndërprera nga tabela PRODUCTS. Nëse jepen këto të dhëna, dy tabelat lidhen nga fusha CategoryID dhe vetëm ato produkte që janë në magazinë (kriteri i ndarjes pas fjalës kyçe WHERE) përfshihen në grupin e të dhënave që rezulton. Rezultati i kthimit në paraqitjen e parë është paraqitur në fig. një.

Tani le të bëjmë një deklaratë, sikur të tregojmë të gjitha territoret e një rajoni të ngjashëm. Qëllimi i prezantimit është të dalë nga sulmi (Lista 2).

Duke u ngatërruar me faktin që propozimi SELECT rrotullon rezultatet sipas nevojës, shtojmë deklaratën CREATE VIEW dhe caktojmë emrin EASTTERR, i cili krijohet (Lista 3).

Në vend që të krijoni një tekst të dorëzuar manualisht, mund të përdorni mjete vizuale për të hyrë në depon e DBMS. Në fig. Figura 2 tregon se si mund të krijohet i njëjti aplikacion pas mjetit shtesë View Designer, i cili është pjesa e magazinës së Enterprise Manager, që vjen përpara Microsoft SQL Server.

Pjesa e sipërme e View Designer ju lejon të specifikoni se si lidhen tabelat dhe cilat fusha shfaqen në të dhëna. Më poshtë mund të futni tabela dhe fusha pseudonime, zëvendësimi i vlerave të tyre, mënyra e paraqitjes. Dalі vendosi tekstin përfundimtar të njoftimit dhe rezultatet e yogo vikonannya.

Së pari, më lejoni të përfundoj një vështrim të shkurtër përreth, ne do të flasim pak për to, si të marrim informacion shtesë rreth tyre. Në Microsoft SQL Server 7.0, ne mund të rregullojmë procedurat e mëposhtme të sistemit që ruhen:

  • Për të marrë informacion rreth dosjeve, mund të përdorni procedurën e sistemit sp_help. Për shembull, sp_help EastTerr për të kthyer situatën në lidhje me incidentin;
  • për të modifikuar tekstin e hyrjes, mund të rregulloni procedurën sp_helptext, e cila ruhet;
  • për të njohur listën e tabelave në të cilat ruhet një paraqitje, mund të përdorni procedurën e sistemit sp_depends;
  • për të riemërtuar një deklaratë, mund të ndryshoni procedurën e sistemit sp_rename, e cila ruhet.

Kemi parë se kë kemi ndarë, si të fitojmë provat për heqjen e të dhënave, si të plotësojmë këto dhe kritere të tjera. Le të kthehemi te pjesa tjetër e prapanicës. Në bazën e të dhënave NorthWind ka disa rajone, dhe për zgjedhjen e listës së territoreve të rajoneve të zgjedhura, na duhen disa deklarata të ndryshme. Detyra mund të falet, yakbee mund të ketë kaluar vlerën RegionID si parametër. Mund të punohet për procedura shtesë, për çfarë të kujdesemi, për të cilat do të flasim në divizionin sulmues.

Procedurat e ruajtjes

Procedura që ruhet është përpilimi i një grupi propozimesh SQL, kursimet në bazën e të dhënave si emërtimi i objekteve dhe bashkimi si një fragment kodi i vetëm. Procedurat e ruajtjes mund të pranojnë dhe rrotullojnë parametrat. Nëse krijoni një procedurë që ruhet, serveri e përpilon atë dhe e vendos në cache, e cila shpërndahet, pas së cilës kodi i përpilimit mund të bllokohet nga dekadat. Nëse programi fiton procedurën që ruhet, ai kalon parametrat sipas nevojës dhe serveri fiton procedurën pa rikompilim.

Procedurat e ruajtjes ju lejojnë të rrisni produktivitetin e programeve. Në radhë të parë, porіvnjano іz SQL-kërkesa të mëdha, të cilat detyrohen nga shtesa e klientit, era e keqe kërkon më pak se një orë për t'u përgatitur para përfundimit, erërat e erërave tashmë janë përpiluar dhe ruajtur. Nga ana tjetër, më pak trafik është gjithashtu më pak në kohë, më pak në kohën e transferimeve të pyetjeve SQL, më pak numër i të dhënave transmetohet në lidhje. Oriz. 3 procedura ilustruese javore, të cilat merren nga shtesa e klientit.

Procedurat e ruajtjes ripërpilohen automatikisht, sikur me objekte, duke derdhur erë të keqe në to, zrobleno be-yaki ndryshim; іnakshe kazhuchi, erë e keqe zavzhdi aktuale. Siç u përmend më lart, procedurat që ruhen mund të marrin parametra që lejojnë shtesa të ndryshme të fitojnë të njëjtën procedurë, zastosovuyuchi grupe të ndryshme të dhënash hyrëse.

Procedurat e ruajtjes kërkohen për të mbështetur integritetin e të dhënave dhe zbatimin e rregullave të biznesit. Ndonjëherë, fleksibiliteti dodatkova, copëzat janë të disponueshme, ndërsa rregullat e biznesit ndryshojnë, ju mund të ndryshoni tekstin e procedurës, pa ndryshuar shtesat e klientit.

Për të krijuar, ndryshuar dhe modifikuar procedurat, përdorni propozime të veçanta SQL - CREATE PROCEDURE, ALTER PROCEDURE dhe DROP PROCEDURE. Ne i shikojmë ata në divizionin sulmues.

Propozimi KRIJO PROCEDURË

Klauzola CREATE PROCEDURE zgjidhet për të krijuar procedurën që do të ruhet. Mund të ketë një sintaksë analizuese fyese:

CREATE PROC proc_name [(@parameter data_type) [= default] ] [...] AS sql_statements

Argumenti proc_name vendos emrin e procedurës, e cila mund të ruhet nëse mund të jetë unike brenda bazës së të dhënave të thread-it. Argumenti @parameter specifikon një parametër të procedurës. Klauzola CREATE PROCEDURE mund të ketë një ose më shumë parametra. Megjithëse nuk ka vlerë për parametrin për promovime, mund të ketë transferime nga një korrespondent (ose një shtesë klienti) sipas orës së një procedure javore. Në Microsoft SQL Server 7.0, numri i parametrave të procedurës që merren nuk është përgjegjës për tejkalimin e 1024; për umovchannyam erë e keqe mozhut nënë znachennya NULL.

Në mënyrë domethënëse, mekanizma të tillë universalë për aksesimin e të dhënave mund të vendosin kufizime shtesë në numrin e parametrave të procedurave që ruhen. Për shembull, drejtuesi BDE për Oracle 8 është i ndërtuar për të punuar vetëm me procedura, numri i parametrave të të cilave nuk ndryshon 10.

Argumenti data_type specifikon llojin e të dhënave për parametrin. Fjala kyçe e paracaktuar mund të përdoret për të vendosur një vlerë pas një promovimi - mund të jetë një konstante ose NULL. Kur një vlerë është specifikuar për një bllokim, procedura mund të lihet jashtë pa një vlerë për parametrin. Po kështu, procedura përdor një parametër me fjalën kyçe LIKE, vlera e promovimit mund të zëvendësohet me karaktere grupore (%, _, dhe [^]).

Fjala kyçe OUTPUT tregon se cilin parametër duhet ta ktheni.

Fjala kyçe AS tregon se si procedura mund të vizualizohet nëse numri i propozimeve dhe propozimeve SQL në shtrirjen procedurale të SQL është specifik për këtë server.

Procedura, e krijuar për klauzolën shtesë CREATE PROCEDURE, do të ruhet nga databaza e transmetimit. Në Microsoft SQL Server, emrat e procedurave vendosen në tabelën e sistemit sysobjects dhe teksti i daljes vendoset në tabelën e syscomments.

Për të ndryshuar atë që është bërë më parë, zgjidhet procedura e mëposhtme për të fituar propozimin ALTER PROCEDURE, i përshkruar shkurtimisht në seksionin vijues.

PROCEDURA E HEQJES SË propozimit

Tsya propozim vikoristovuetsya për procedurat në distancë që merren nga baza e të dhënave. Propozimi i PROCEDURËS SË HIQJES kërkon një argument, emri i procedurës për t'u parë.

Kur hiqni procedurat që ruhen, informacioni rreth tyre hiqet nga tabelat e sistemit sysobjects dhe syscomments.

Krijimi i procedurave të zgjedhura që ruhen

Në degën e caktuar për ngjarjet, ne i respektuam ato që do të kishin qenë të dobishme, kështu që mund të kalonim një parametër në prezantim për të zëvendësuar vlerën RegionID për zgjedhjen e një prej katër rajoneve në bazën e të dhënave NorthWind. Le ta shohim sërish, gjë që e kthen listën e territoreve në rajon:

ZGJIDH Territoret.TerritoryDescription, Region.RegionDescription FROM Territories BASHKOHU I BRENDSHËM Rajoni ON Territories.RegionID = Region.RegionID WHERE Territories.RegionID = 1

Për të zgjedhur një rajon tjetër, duhet të ndryshojmë mendjen në klauzolën WHERE në rreshtin e mbetur. Gjithashtu, siç kemi ndryshuar (ne e quajmë її RegID), mund të zgjedhim një nga katër rajonet pa ndryshuar pjesët e tjera të regjistrimit.

Baza e të dhënave NorthWind ka disa rajone me numra nga 1 deri në 4. Kjo do të thotë se RegID mund të ndryshohet si një lloj i tërë. Kodi i procedurës që do të merret është paraqitur më poshtë:

KRIJO PROCEDURË Shfaq Rajoni @RegID int AS ZGJEDHJE Territore.TerritoryDescription, Region.RegionDescription FROM Territories BASHKOHU I BRENDSHËM Rajoni ON Territories.RegionID = Region.RegionID WHERE Territories.RegionID = @RegID

Kthehu respekt për ata që mund të kenë mohuar të gjithë tekstin tek SELECT e paarritshme (me shkronja të pjerrëta) dhe kanë shtuar vetëm propozimin CREATE PROCEDURE në emër të procedurës së krijuar rishtazi, e cila është marrë (në rreshtin e parë), është deklaruar parametri ( në rreshtin tjetër) dhe fjala kyçe AS, e cila tregon kallirin e propozimeve, me të vërtetë fiton.

Rezultati i procedurës së krijuar të SQL Server Query Analyzer për RegID = 2 lexime në fig. 3 .

Natyrisht, ne mund të ruajmë procedurat që po ruhen, jo vetëm për zbatimin e versioneve të zgjeruara të manifestimit, por të kërkesave "intelektuale" SELECT. Procedurat e ruajtjes ofrojnë mekanizma që ju lejojnë të automatizoni shumë detyra rutinë.

Me Microsoft SQL Server 7.0, ne gjithashtu mund të modifikojmë procedurat e kursimit të sistemit për të punuar me procedurat më të rëndësishme që ruhen:

  • sp_stored_procedures - tregoni një listë të procedurave për të ruajtur;
  • sp_helptext - tregoni tekstin e procedurës që do të ruhet;
  • sp_varet - tregoni informacion në lidhje me ngecjen e procedurave të ruajtjes;
  • sp_procoption - vendos opsionet për procedurat që ruhen ose vendosen;
  • sp_recompile - ripërpiloni procedurën në kohën e javës së ardhshme;
  • sp_rename – ndryshoni emrin e një procedure.

Procedurat e sistemit që ruhen

Po flasim për Microsoft SQL Server, por nënkuptojmë numrin e madh të procedurave të sistemit që ruhen dhe zbatohen prej tij. Emrat e procedurave të sistemit që ruhen fillojnë nga SP_ ose XP_ dhe ruhen në bazën e të dhënave kryesore. Më shpesh, ne kemi përshkruar tashmë veprat e procedurave sistemike shpesh fitimtare që janë shpëtuar.

Zbuloni respektin, se shkaktarët nuk janë fajtorë për ndryshimin e të dhënave koristuvaçev.

Propozimi CREATE TRIGGER mund të ketë dy tabela të veçanta. Për shembull, tabelat e fshira dhe të futura mund të kenë të njëjtën strukturë si një tabelë, të caktohet një shkas dhe të fshihen vlerat e vjetra dhe të reja të të dhënave që janë ndryshuar. Për shembull, ne mund të kthejmë propozimin e mëposhtëm SQL për të kërkuar regjistrime në distancë:

SELECT * FROM u fshi

Ne tavoline Figura 3 tregon si tabelat e fshira ashtu edhe ato të futura për të gjitha ndryshimet e mundshme të të dhënave.

Për të ndryshuar një shkas të hapur, ndiqni propozimin ALTER TRIGGER. Le të flasim për diçka të re në divizionin sulmues.

Për kalli, duhet të shtojmë dy fusha të reja në tabelë, në të cilat numrat do të reduktohen. Domethënë їх UpdatedBy (emri i menaxherit që ndaloi regjistrimin) dhe UpdatedWhen (ora kur u ndryshua rekordi). Le të krijojmë një shkas të quajtur KeepTrack. Kodi i boshtit të jogës:

KRIJO KRIJUESIN KeepTrack ON Klientët INSERT, PËRDITËSO SI PËRDITËSIM Klientët SET Customers.UpdatedBy = USER_NAME(), Customers.UpdatedWhen = GETDATE() FROM futur, klientët WHERE futur.CustomerID = Customers.CustomerID

Siç mund ta shihni nga teksti i daljes së këmbëzës, vin kontrollohet pas operacioneve INSERT dhe UPDATE skin në tabelën Customers. Ky aktivizues do të ruajë emrin e menaxherit (bazën e të dhënave) nga fusha Customers.UpdatedBy dhe do të ndryshojë datën dhe orën nga fusha Customers.UpdatedWhen. Numrat e të dhënave janë të përjashtuara nga tabela kohore, të paraqitura.

Ashtu si Bachimo, ky shkas ju lejon të ndiqni ndryshimet dhe të futni të dhëna të reja në tabelë.

Përpara kësaj, si të përfundojmë një vështrim të shkurtër të nxitësve, ne jemi fajtorë për ndihmë, kështu që ju mund të dini informacionin rreth nxitësve. Tabela e sysobjekteve ruan informacione rreth nxitësve dhe llojeve, dhe tabela e syscomments ruan tekstin e tyre të daljes.

Visnovok

Në këtë pjesë, ne shikuam disa lloje të objekteve të bazës së të dhënave - procedurat, zbulimin dhe nxitësit që ruhen. Ne njohëm përparimin:

  • Pamja - tabela virtuale tse, tingulli i krijuar si një nëngrup kolonash në një numër tabelash. Për të krijuar një pamje, përdoret propozimi CREATE VIEW, për ta modifikuar, propozimi ALTER VIEW dhe për të fshirë, propozimi DROP VIEW.
  • Procedura që ruhet është përpilimi i një grupi propozimesh SQL, kursimet në bazën e të dhënave si emërtimi i objekteve dhe bashkimi si një fragment kodi i vetëm. Për të krijuar një procedurë që ruhet, vendoset propozimi CREATE PROCEDURE, për të ndryshuar - ALTER PROCEDURE, dhe për të fshirë - DROP PROCEDURE.
  • Një nxitës është një lloj i veçantë i procedurës që ruhet, pasi thirret automatikisht, nëse të dhënat në tabelën e vetme shtohen, shfaqen ose ndryshohen për propozimet shtesë SQL INSERT, DELETE ose UPDATE. Kërcuesit krijohen për ndihmën e klauzolës CREATE TRIGGER. Për të ndryshuar një shkaktar, zgjidhet propozimi ALTER TRIGGER dhe propozimi DROP TRIGGER hiqet.

ComputerPress 12"2000

Përfshini një rresht në procedurën tuaj - SET NOCOUNT ON:

Me një virus DML miqësor ndaj lëkurës, serveri SQL na tregon menjëherë se çfarë të bëjmë për numrin e regjistrimeve të regjistruara. Tsya іnformatsija mund të jetë për ne kostoja e kodit, por pas kësaj do të jetë absolutisht e përsosur. Duke shkruar SET NOCOUNT ON ne e aktivizojmë këtë funksion. Për procedurat që mund të eliminojnë numrin e viruseve ose cikleve, të cilat mund të japin një rritje të konsiderueshme të produktivitetit, sasia e trafikut do të reduktohet ndjeshëm.

Transaksion SQL

Përputhni emrin e skemës me emrin e objektit:

Epo, këtu mendoj zrazumilo. Operacioni i jepet serverit de shukati ob'єkti dhe zamіst për këtë, duke gërmuar pa gërmime nëpër zasіkah-në tuaj, ju do të dini se ku duhet të pini dhe çfarë të merrni. Me një numër të madh bazash, tabelash dhe procedurash që ruhen, mund të kursejmë kohën dhe nervat tona.

Transaksion SQL

SELECT * FROM dbo.MyTable -- Boshti është shumë i mirë -- Zëvendëso SELECT * FROM MyTable -- Dhe kështu është keq -- Procedura EXEC telefono dbo.MyProc -- Më fal përsëri -- Zëvendëso EXEC MyProc -- Keq!

Mos përdorni prefiksin "sp_" në emrat e procedurave tuaja, të cilat shmangen:

Në fakt, procedura jonë bazohet në sp_, SQL Server në radhë të parë në bazën e të dhënave të tij kryesore. Në të djathtë, prefiksi i dhënë është zgjedhur për procedurat speciale të brendshme të serverit që ruhen. Ai eksperiment yoga mund të sillet në vitrate shtesë dhe të prodhojë një rezultat të pasaktë, pasi procedura me të njëjtët emra, si juaji, do të gjendet në bazën e të dhënave të jogës.

Ndrysho IF EXISTS (ZGJEDH 1) në vend të IF EXISTS (ZGJEDH *):

Për të ndryshuar pamjen e hyrjes në tabelën pasardhëse, fitojmë NESE EKZISTON viraz. Dritarja daneze kthehet e vërtetë, kështu që edhe një vlerë, jo e rëndësishme "1", të gjitha kolonat ose një tabelë kthehet nga dritarja e brendshme. Vіdomі danі, në parim nuk vikoristovuyutsya. Në këtë mënyrë, për të stisnennya trafikun në orën e transmetimit të të dhënave, është më logjike të mposhtet "1", siç tregohet më poshtë.

Ruajtja e procedurave SQL - hakimi i një moduli programi, i cili mund të ruhet nga shikimi i objekteve të ndryshme. Me fjalë të tjera, objekti që ka instruksionet SQL. Procedurat që ruhen mund të përdoren në klientët e aplikacionit për të arritur produktivitet të mirë. Për më tepër, objekte të tilla shpesh thirren nga skenarë të tjerë, ose për të frymëzuar ndonjë lloj tjetër shpërndarjeje.

Hyrja

Është e rëndësishme që kushdo të dijë se ato janë të ngjashme me procedurat e tjera (për shembull, MS SQL). Ndoshta ke te drejte. Ata mund të kenë parametra të ngjashëm, ata mund të shohin vlera të ngjashme. Mbi to, era e keqe qëndron për një orë. Për shembull, erërat janë të lidhura me bazat e të dhënave DDL dhe DML, si dhe me funksionet kryesore (emri i koduar - UDF).

Në fakt, procedurat SQL për të cilat kujdeset janë të afta për një gamë të gjerë avantazhesh, pasi shohin mesin e proceseve të tilla. Bezpeka, ndryshueshmëria e programimit, produktiviteti - të gjitha shtohen në thelbin, i cili funksionon nga bazat e të dhënave, më shumë të dhëna. Kulmi i popullaritetit të procedurave ra në 2005-2010, nëse programi u lëshua me emrin "Microsoft" me emrin SQL Server Management Studio. Me ndihmën e bazave të të dhënave, është bërë shumë më e thjeshtë, më praktike dhe më e përshtatshme. Nga shkëmbi në botë, një popullaritet i tillë po fiton në mesin e programuesve. Sot është një program absolutisht i shëndoshë, si për koristuvaçivët, si “lidhja” me bazat e të dhënave, është bërë si “Exel”.

Kur klikoni mbi procedurën, ajo përpunohet menjëherë nga vetë serveri pa zayvih protsessіv se vtruchannya coristuvacha. Nëse po, ju mund të zdiyasnyuvati të jetë-si një i largët, vikonannya, ndryshim. Për të gjitha këto, ju duhet një operator DDL, i cili është vetë-mësuar për të grabitur pjesët më të ndërlikuara të përpunimit të objekteve. Për më tepër, duket se është shumë i shpejtë, dhe serveri në fakt nuk është navantazhuetsya. Kjo lloj shpejtësie dhe produktiviteti ju lejon të transferoni lehtësisht sasi të mëdha informacioni nga serveri në server.

Për zbatimin e kësaj teknologjie, robotët me informacion bazohen në programimin mov. Para tyre, ju mund të shihni, për shembull, PL / SQL si Oracle, PSQL në sistemet InterBase dhe Firebird, si dhe Transact-SQL klasik "Microsoft". Të gjitha erërat njihen për krijimin dhe përfundimin e procedurave që ruhen, që lejojnë zotërimin e algoritmeve në baza të të dhënave të shkëlqyera. Është e nevojshme që ata që menaxhojnë një informacion të tillë të jenë në gjendje të mbrojnë të gjitha objektet nga aksesi i paautorizuar në sistemet e palëve të treta dhe, padyshim, të krijojnë, ndryshojnë ose shikojnë të dhëna të tjera.

Produktiviteti

Objektet e bazës së të dhënave Qi mund të programohen me shtigje të ndryshme. Tse i lejon koristuvachas të zgjedhë llojin e metodës vikoroze, e cila do të jetë më e përshtatshme, e cila do të kursejë forcën e asaj ore. Përveç kësaj, vetë procedura është duke u përpunuar, e cila ju lejon të fshehni kurset e shkëlqyera të këmbimit për orë midis serverit dhe serverit. Gjithashtu, moduli mund të riprogramohet dhe ndryshohet në çdo kohë. Veçanërisht, është e rëndësishme të theksohet fleksibiliteti, për të cilin pritet nisja e procedurës së ruajtur SQL: ky proces është më i ngjashëm me të tjerët, i ngjashëm me të, për ta bërë atë efikas dhe universal.

Bezpeka

Ky lloj përpunimi i informacionit përdoret në procese të ngjashme, gjë që garanton siguri të përmirësuar. Tse bezpechuetsya për faktin se qasja e të tjerëve në procedura mund të fiket përsëri. Tse për të lejuar administratorin të kryejë operacione me ta në mënyrë të pavarur, duke mos pasur frikë nga informacioni perehoplennya ose aksesi i paautorizuar në bazën e të dhënave.

Transferimi i të dhënave

Lidhja ndërmjet procedurës SQL, e cila merret, dhe shtojcës së klientit bazohet në parametra dhe vlera të ndryshme, të cilat rrotullohen. Le të mos obov'yazkovo transferimin e të dhënave në procedurë, e cila është ruajtur, informacioni përpunohet (kryesisht sipas kërkesës) dhe përpunohet për SQL. Meqenëse procedura, e cila po ruhet, ka përfunduar punën e saj, ka paketa të dhënash (ale, e di, për gabimet) në shtesë, në mënyrë që të përdorni jogën, metodat fitimtare, për ndihmën e të cilave mund të zbuloni se si të ruani procedurën SQL, kështu që kthej, për shembull:

Kalimi i të dhënave për një parametër shtesë në llojin Output;

Transferimi i të dhënave për ndihmë të operatorit;

Forca e haraçit për ndihmën e operatorit për zgjedhjen.

Dhe tani le t'i hedhim një sy, sikur të shohim të gjithë procesin në mes.

1. Krijimi i një procedure të ruajtur EXEC në SQL

Mund të krijoni një procedurë në MS SQL (Managment Studio). Pasi të jetë krijuar procedura, ajo do të riorganizohet nga të dhënat e bazës së programimit vuzol, në të cilën procedura do të krijohet nga operatori. Për procedurën vykonannya SQL, scho zberіgayutsya, vykoristovuyut EXEC-proces, kaki m_sti іm'ya e vetë objektit.

Kur procedura kombinohet, emri deklarohet fillimisht, pas së cilës zgjidhen një ose më shumë nga parametrat që ju janë caktuar. Parametrat mund të jenë jo të detyrueshëm. Meqenëse parametri(et) për trupin e procedurës do të shkruhet, është e nevojshme të kryhen operacionet e nevojshme.

Në të djathtë, në atë që trupi mund të ndryshohet në nivel lokal, roztashovani në nіy, dhe tsі ndryshon lokalisht edhe sipas datës para procedurave. Me fjalë të tjera, ato mund të shihen vetëm në mes të trupit të një procedure të Microsoft SQL Server. Procedurat e kursimit nganjëherë janë vvazhayutsya lokale.

Kështu, për të krijuar një procedurë, na duhet emri i procedurës dhe të paktën një parametër në trupin e procedurës. Kapni respektin se opsioni më i rëndësishëm për një kohë të tillë është krijimi i procedurës për emrin e skemës në klasifikues.

Trupi i procedurës mund të jetë një lloj shembulli, si krijimi i tabelave, futja e një ose një rreshti rreshtash në tabela, lloji dhe natyra e bazës së të dhënave, etj. Trupi proteo i procedurës është midis fitoreve të operacioneve aktuale në atë të re. Aktet e përcaktimit të rëndësishëm janë ndërtuar më poshtë:

Trupi nuk është fajtor për kryerjen e ndonjë procedure tjetër që po shpëtohet;

Trupi mund të krijojë një falje për objektin;

Trupi nuk është fajtor për krijimin e nxitësve të përditshëm.

2. Instalimi i një ndryshimi në trupin e procedurës

Ju mund t'i ndryshoni ato lokale në trupin e procedurës, dhe erërat do të ndryshohen vetëm në mes të trupit të procedurës. Praktikë e mirë është krijimi i procedurave që ndryshohen në kallirin e trupit, të cilat ruhen. Por është gjithashtu e mundur të instalohen ndryshime në çdo vend në trupin e një objekti të caktuar.

Në disa raste, mund të dalloni se disa nga ndryshimet janë instaluar në një rresht dhe lëkura e parametrit të ndryshimit është e përforcuar me ujë. Gjithashtu, ju lutemi respektoni që mund të ndryshoni prefiksin @. Ju mund të vendosni një ndryshim për llojin e procedurës, kudo që dëshironi. Për shembull, ndryshimi i @NAME1 mund të shprehet më afër fundit të procedurës. Për të dhënë kuptimin e ndryshimit pa zë, mblidhen një grup të dhënash të veçanta. Në bazë të situatës, nëse shprehen më shumë se një ndryshim në një rresht, në një situatë të tillë ka më pak se një grup të dhënash speciale.

Shumë shpesh, kuizet pyesin: "Si e dalloni një vlerë të vogël në një deklaratë në titullin e procedurës?" mirë. Të ushqesh cicavën, por është më e lehtë ta bësh atë më të pasur, nuk mendon kështu. Këshillë: për ndihmën e çifteve të tilla, si "Zgjidh Var = vlerë". Ju mund t'i mposhtni shanset, duke i përhapur ato me një gjendje kome.

Në të pasmet më manipuluese, njerëzit tregojnë krijimin e një procedure të thjeshtë, për çfarë kujdeset dhe vikonannya її. Për këtë procedurë, ju mund të merrni parametra të tillë si procesi, çfarë quan ai, dhe vlera është afër asaj të re (por mos e ndryshoni atë). Ndërsa era e keqe ikën, atëherë në mes të trupit, fillojnë proceset. Për shembull, si të krijoni një procedurë, si të pranoni vendndodhjen e rajonit nga pajtimtari, çfarë të telefononi dhe të ktheni të dhënat rreth tyre, sa autorë dërgohen në vendndodhjen e atij rajoni. Procedura do të marrë parasysh tabelat e autorëve të bazës së të dhënave, për shembull, Pubs, deri në fund të listës së autorëve. Për t'i hedhur një sy bazës së të dhënave, për shembull, Google kap skriptin SQL nga ana e SQL2005.

Në rastin e përparmë, procedura merr dy parametra, të cilët në anglisht do të quhen @State dhe @City. Lloji i të dhënave është në përputhje me llojin e caktuar për suplementin. Titulli i procedurës mund të ndryshohet brenda vetes nga @TotalAuthors (i të gjithë autorëve) dhe do të ndryshohet për qëllimin e shfaqjes së sasisë së tyre. Dalі z'yavlyaєtsya razdіl vyboru zaputu, yakii gjithë pіdrakhovuє. Nareshti, podrahovane znachennya vіdobrazhaєєtsya vіknі vyvodu për ndihmën e operatorit për një mik.

Si mund ta ruaj procedurën me SQL Viconati

Ka dy mënyra për të ndjekur procedurën. Shfaqet rruga e parë, duke kaluar parametrat, pasi lista e ndarjeve shfaqet pas emrit të procedurës. Është e lejuar, mund të kemi dy kuptime (si në prapanicën e përparme). Vlerat merren për ndryshimin e parametrave shtesë të procedurave @State dhe @City. E gjithë mënyra e transferimit të parametrave të të cilit është në një rend të rëndësishëm. Kjo metodë quhet kalim i argumentit rendor. Nga ana tjetër, parametrat njihen pa mëdyshje dhe në këtë mënyrë rendi nuk është i rëndësishëm. Një mënyrë tjetër për ta bërë këtë është kalimi i argumenteve me emër.

Procedura mund të ndryshohet si standard. Kështu shkon, si në prapanicën e përparme, por vetëm këtu tregohen parametrat. Pra, parametri @City merret fillimisht dhe @State merret nga vlerat e bllokimit. Parametri pas bllokimit do të tingëllojë sikur është në rregull. Procedurat SQL që ruhen kalohen si parametra të thjeshtë. Në këtë rast, kini parasysh, parametri UT tejkalon vlerën për bllokimin SA. Vicoon tjetër ka më shumë se një vlerë argumenti për parametrin @ City, dhe parametri @ State merr vlerën e çelësit CA. Përditësimet në program do të jenë të lumtura, në mënyrë që ndryshimet për shkurtesat të përditësohen më afër fundit të listës së parametrave. Në një mënyrë tjetër, ne nuk mund të vykonannya, madje edhe ju jeni fajtor që praktikoni transferimin e argumenteve të emërtimit, gjë që është më e mirë dhe më e palosshme.

4. Ruaj Procedurat e Serverit SQL: Mënyrat e Rrotullimit

Ekzistojnë tre mënyra të rëndësishme për të menaxhuar të dhënat në procedurat e konfiskimit që ruhen. Erë e keqe rehabilitohet më poshtë:

Kthimi i vlerës së procedurës që merret;

Përjashtoni parametrin e procedurave që ruhen;

Zgjidhni një nga procedurat që ruhen.

4.1 Kthimi i vlerës së ruajtjes së procedurave SQL

Në këtë metodë, procedura jep vlerën e ndryshimit lokal dhe e rrotullon atë. Procedura mund të kthehet pa vonesë. Në prapanicën sulmuese, ata krijuan një procedurë, sikur të kthenin një numër të madh autorësh. Nëse e krahasoni këtë procedurë me ato të mëparshme, mund të mendoni se kuptimi për tjetrin zëvendësohet me atë të kthimit.

Tani le të pyesim veten se si ta ndjekim procedurën dhe të futim kuptimin, si të kthehemi. Procedura Vikonannya vmagaє vstanovlennya zminnoї që mik, jak të kryhet pas procesit. Vini re se mund të zëvendësoni një operator Select, për shembull, Select @RetValue, si dhe OutputValue.

4.2 Hiq parametrat e procedurave SQL që janë ruajtur

Kuptimi i vіdpovіd mund të jetë vikoristane për kthimin e një zminnoy, të cilin ne dhe bachiled në prapanicë përpara. Varianti i parametrit Output lejon procedurën të korrigjojë njërën ose tjetrën vlerën e ndryshimit për anën tjetër. Parametri i daljes përcaktohet nga e njëjta fjalë kyçe "Output" kur krijohet procedura. Nëse një parametër i punës është një parametër në dalje, atëherë objekti i procedurës është përgjegjës për vendosjen e vlerës së tij. Procedurat e ruajtjes së SQL, të cilat mund të përdoren më poshtë, përdoren në raste të ndryshme me informacionin e nën-çantës.

Aplikacioni ynë do të ketë dy emra zyrtarë: @ TotalAuthors dhe @ TotalNoContract. Erë e keqe tregohet nga lista e parametrave. Numri i ndryshimeve jepet në mes të trupit të procedurës. Nëse fitojmë parametrat, pajtimtari mund të zgjedhë vlerën e futur në mes të trupit të procedurës.

Përveç kësaj, në skenarin e mëparshëm, bëhen dy ndryshime për të rritur vlerën, sikur të ruash procedurën e MS SQL Server në parametrin e daljes. Më pas procedura goditet nga rruga e vendosjes së vlerës normale të parametrit CA. Parametrat vijues janë të njëjtë, dhe më vonë ndryshimet pa zë transmetohen sipas radhës. Kapni respektin se ora e kalimit të ditëve të ndryshuara është fjala kyçe jepet edhe këtu. Pasi procedura ka rezultuar e suksesshme, rëndësia, pasi ata kërkojnë ndihmë të parametrave të fundit, tregohet për rakordim të mëtejshëm.

4.3 Zgjidhni një nga procedurat SQL për të ruajtur

Kjo teknikë është fitimtare për kthimin e grupit të vlerave në tabelat e të dhënave (RecordSet) në procedurën e plotë që është marrë. Në këtë aplikacion, procedura SQL që ruhet, me parametrat @AuthID, ushqen tabelën "Authors" me një shteg filtri, të dhënat rrotullohen pas parametrit shtesë @AuthId. Deklarata Select anulon atë që mund të rrotullohet dhe thërret procedurat për të zgjedhur. Kur procedura dështon, AuthId kthehet prapa. Një procedurë e tillë këtu rrotullon gjithmonë vetëm një rekord, ose përndryshe është e nevojshme. Por procedura, e cila është e kujdesur, nuk lejon që çdo ditë të kthehet më shumë se një hyrje. Shpesh është e mundur të përdoret një shembull, për disa nga rrotullimet e të dhënave me parametra të ndryshëm, me pjesëmarrjen e llogaritjes së ndryshimit, ekziston një mënyrë për të dhënë një numër vlerash qese.

Në fund

Procedura që po ruhet është të plotësohet me një modul serioz softueri, të cilin e kthen ose e transmeton, si dhe instalon ndryshimet e nevojshme në shtojcën e klientit. Procedura Oskіlki, e cila ruhet, vikonuєtsya në vetë serverin, shkëmbimi i të dhënave me detyrimet e mëdha midis serverit dhe shtesës së klientit (për ato të zbritshme) mund të fshihet. Kjo ju lejon të degradoni në serverin SQL, i cili, padyshim, shkon në duart e sundimtarëve të tyre. Një nga të parashikueshmet janë procedurat T SQL për të cilat kujdesen ata që janë të përfshirë në krijimin e bazave të të dhënave të rëndësishme. Gjithashtu, ka një numër të madh, madhështor nuancash, të cilat mund të jenë të ndryshme gjatë kryerjes së procedurave që ruhen, është e nevojshme më shumë për ata që planifikojnë të angazhohen në programim, përfshirë edhe profesionalisht.

Nëse ka procedurat e mëposhtme për t'u ruajtur dhe nëse jam fajtor për fitimin e një deklarate në SQL Server?

Më lejoni t'ju lejoj të krijoni pije dinamike, si mund t'i përmirësojmë parametrat?

Cila prej tyre është më e dukshme, cila është më e mira dhe cila është më e pakta?

Shikoni ose procedurat që po ruhen, a po e kursejnë vazhdimisht kujtesën?

Çfarë do të thotë, le të themi, që deklaratat krijojnë një tabelë virtuale dhe procedurat krijojnë një tabelë materialesh?

Ji i sjellshëm, më trego për më shumë pika, si erë e keqe.

Solutions Collecting From Web of "Pse ka një ndryshim midis procedurave, kursimeve dhe taksave?"

Shiko є Virtual tabela. Mund të arrini deri në numrin e tabelave në paraqitje dhe të fitoni aplikacionin për dorëzimin e të dhënave, pasi të dhënat janë gjetur në një tabelë.

Procedura për zgjedhjen e parametrave për funksionin e zgjedhur është ruajtur ... në mënyrë që të përditësohet futja e të dhënave ose rrotullimi i vlerave të tjera ose grupi i të dhënave.

Krijoi njoftime dhe procedura që po ruhen - për t'u hakmarrë ndaj informacionit nga Microsoft për ato, nëse dhe pse i fitoni ato.

Le të themi se kam dy tabela:

tbl_user Stovptsi: .user_id, .user_name, .user_pw

tbl_profile Stowpci: .profile_id, .user_id .profile_description

Pra, ndërsa po përpiqem t'i marr këto tabela SHUMË ... në vend të kësaj, për të punuar në CLEAR peice sql, do të përdorja një vështrim, për shembull:

KRIJO Shiko vw_user_profile AS Zgjidh A.user_id, B.profile_description FROM tbl_user A bashkohu majtas tbl_profile B në A.user_id = b.user_id GO

Prandaj, në të ardhmen, dua të kërkoj një profil_përshkrim për ID-në e koristuvach ... gjithçka që duhet të grabis,

SELECT profile_description FROM vw_user_profile WHERE user_id = @ID

Ky kod mund të ndryshohet në procedurën që ruhet, për shembull:

Krijo procedurën dbo.getDesc @ID int AS fillojë ZGJIDH profilin_përshkrim NGA vw_user_profile WHERE user_id = @ID FUND SHKO

Për këtë mund të telefonoj

Dbo.getDesc 25

dhe unë heq përshkrimin për ID-në e koristuvach 25 de 25 - parametri juaj.

Është e qartë se BAGATO është më shumë, por ideja kryesore është më pak.

Në anën e pasme, duhet të kuptoni se fyerjet janë fjalime të ndryshme. Kursimet e procedurave janë më fitimtare për deklaratat INSERT-UPDATE-DELETE. Këto parashtresa janë të justifikuara për deklaratat SELECT. dhe ju jeni fajtor për inatin fitimtar.

Ju nuk mund të ndryshoni të dhënat në pamje.

Hidhini një sy: Kjo është një tabelë virtuale që përbëhet nga një ose më shumë rreshta dhe kolona nga tabela të ndryshme të bazës së të dhënave reale. Tse shabllon rowk_v dhe stovpts_v tabela k_lkoh. Këtu nuk mund të kaloni asnjë parametër.

Procedurat e ruajtjes: përdorni para kohe një grup deklaratash SQL, për të cilat mund të modifikoni parametra si të dhënat hyrëse dhe të hiqni të dhënat dalëse.

Paraqitjet mund të paraqiten në një procedurë që ruhet, por një procedurë që ruhet nuk mund të paraqitet në Views…!

Procedura shovischa është fitimtare nëse SQL e thjeshtë thjesht nuk mjafton. Duhet të ndryshohen procedurat e ruajtjes, ciklet dhe ciklet e procedurave të tjera që ruhen. Programimi Tse mova, jo mova zapitіv.

    Paraqitjet janë statike. Mendoni për to sikur të ishin tabela të reja me një plan urbanistik të thjeshtë dhe të dhënat në to po krijohen sipas dëshirës, ​​me një shënim zëvendësues, me të cilin keni krijuar gjithçka. Si në çdo tabelë SQL, ju mund të renditni dhe filtroni sipas WHERE , GROUP BY dhe RORDER BY.

    Tse për të lënë mënjanë faktin që ju punoni.

    Tse për të hedhur në bazën e të dhënave. Na vjen keq, thjesht ekzekutoni pyetjen dhe filtroni rezultatin. E megjithatë, bazat e të dhënave, si Oracle, ju lejojnë të krijoni deklarata "të materializuara", si në tabelën kryesore, pasi ato përditësohen automatikisht kur ndryshoni llojin bazë të të dhënave.

    Materializimi i deklaratës ju lejon të krijoni indekse në kolonat e deklaratës (veçanërisht në kolonat e llogaritura, të cilat nuk gjenden askund në bazën e të dhënave).

    nuk e kuptoj cfare thua.

Dallimi kryesor qëndron në faktin se nëse kërkoni një deklaratë, përcaktimi futet në kërkesën tuaj. Procedura mund të japë rezultate, por është e përpiluar dhe kaq e shpejtë. Opsioni i dytë është të indeksoni njoftimin.

SQL View është një tabelë virtuale e bazuar në pyetjen SQL SELECT. Parashtresat dorëzohen për një ose më shumë tabela përkatëse të bazës së të dhënave ose deklarata të tjera. Kjo shenjë mittєvy e bazës së të dhënave, ashtu si procedura që merret, është një grup deklaratash Transact-SQL, të palosur në një plan të vetëm ekzekutimi.

Pereglyad është një demonstrim i thjeshtë i të dhënave që ruhen në tabelat e bazës së të dhënave, ashtu si një procedurë që ruhet nga një grup operatorësh, të cilët mund të vikonohen.

Paraqitur më shumë, oscillki vodobrazhae të dhëna nga tabela, se si të pyesni, ashtu si procedura e mbledhjes së instruksioneve sql.

Kthejeni këtë artikull: Rishikimi i procedurave që po ruhen. Po ato që po pëshpëritni

@Patrick ka të drejtë kur tha, mirë, le të shikojmë ushqimin tuaj tjetër, krijoni një pamje për veten tuaj në memorie, dhe në tipin Fallow Joins, Data dhe edhe nëse do të zbërthehet, qoftë grumbullim, mund edhe ju përfundoni duke kërkuar i uritur.

Ruani procedurën për të ruajtur të gjithë punën tuaj ose me zëvendësimet Temp Hash Table, për shembull #tmpTable1, ose në kujtim të @tmpTable1 për ndihmë. Zalezhno v_d të asaj që doni të thoni.

Procedura që merret është e ngjashme me një funksion, por quhet me emra të drejtpërdrejtë. zamіst funktsіy, yakі në fakt vikoristovuyutsya në mes të kërkesës.

Natyrisht, në shumicën e rasteve tavolinat janë në kujtesë, sepse nuk merrni shumë para.

Mahesh nuk ka të drejtë, nëse e lejon verën nuk mund ta ndërrosh haraçin nga haraçi. Babai, shiko Patrikun

KRIJO Shiko vw_user_profile AS Zgjidh A.user_id, B.profile_description FROM tbl_user A majtas bashkohu tbl_profile B në A.user_id = b.user_id

Unë mund të përditësoj të dhënat ... si një prapanicë, mund ta kuptoj nëse është një cich ...

Përditëso vw_user_profile Vendos profilin_description="Menaxheri" ku user_id=4

Përditëso tbl_profile Vendos profile_description="Menaxheri" ku user_id=4

Nuk mund ta fusësh atë në deklaratë, pasi jo të gjitha fushat në të gjithë tabelën janë të pranishme dhe po supozoj se PROFILE_ID është çelësi kryesor dhe nuk mund të jetë NULL. Sidoqoftë, mund të futni gjithashtu një INSERT në vistavu...

Kam krijuar një aplikacion për tryezën kryesore, vicorist ...

Krijo Junk View si SELECT * view

Fut në vlerat e padëshiruara (Kodi, emri) ("glyn", "Glyn Roberts"), ("Mary", "Maryann Roberts")

FSHI nga Junk Where ID>4

І INSERT, і DELETE funksionuan në të njëjtën pikë

Natyrisht, nuk mund të ndryshoni nëse fushat janë, nëse janë grumbullime, ose nëse janë të mbrojtura, ose nëse janë deklarata, si thjesht deklarata të drejtpërdrejta, mund të përmirësohen.

Nëse keni parë më shumë se një tabelë, nuk mund të futni ose shihni, por nëse keni parë më shumë se një tabelë, mund të tingëlloni.

Përveç vënies në dukje më shumë komente, do të doja të shtoja pak respekt për Views.

  1. Dhuratat mund të jenë fitimtare për palosjen e prikhovuvannya. Tregoni skenarin tuaj, në të cilin 5 persona punojnë në projekt, dhe vetëm njëri prej tyre është tashmë një ekip me një bazë të dhënash, për shembull, shoqata të palosshme. Në një skenar të tillë, mund të krijohen verëra, të cilat mund të kërkohen lehtësisht nga anëtarët e tjerë të ekipit, dhe copëzat e qelbur të kërkojnë një tryezë.
  2. Siguria mund të zbatohet lehtësisht Views. Le të themi ne spіvrobіtnik tabelat Paga , Numri SSN. Qytetarët nuk kanë faj që kërkojnë koristuvaçë, të cilët nuk lejohen t'i shikojnë. Në këtë mënyrë, ne mund të krijojmë një njoftim, si p.sh. të zgjedhim kolonat në tabelë, si jo autorizuese, si p.sh. po , vіk ta etj., pa dhënë vërejtje kundërthënëse (p.sh., për rrogën etj., se si u hamendësuam më herët). Tani mund të shohim të lejuara për kërkesë të drejtpërdrejtë në tabela punonjës dhe thjesht ruajeni për lexim nga tema. Në këtë mënyrë, ne mund të realizojmë sigurinë për shikimet e ndihmës.