lagrede prosedyrer er kjørbare databaseobjekter sammensatt av flere SQL-setninger . De hjelper i å forenkle samhandlingen mellom databasen og sluttbruker som ikke har nok kompetanse til å skrive komplekse SQL-spørringer . Du kan bruke lagrede prosedyrer for å gi tilgang , datavalidering og forenkle komplekse behandling som krever flere SQL-setninger . Lagrede prosedyrer kan akseptere input parametere , returnerer verdier og implementere looping logikk som om vi, da , og saken uttalelser. Du trenger
Microsoft SQL Server Query Analyzer
Vis flere instruksjoner
en
Opprette en lagret prosedyre ved hjelp av CREATE PROSEDYRE procedurename syntaks. Skriv inn følgende setninger for å opprette en lagret prosedyre kalt sporderscopy som kopierer innholdet i tabellen Ordrer inn OrdersCopy tabellen .
CREATE PROSEDYRE sporderscopy
AS
SELECT * i OrdersCopy
fra bestillinger
prosedyren ovenfor vil skape en kopi av ordrene tabellen . Du kan også legge til parametere, rekompilere og legge kryptering med opprette prosedyren uttalelse. Parametrene hjelpe å godta verdier i fremgangsmåten som er nødvendig for det ønskede resultat. Output parametre brukes til å lagre verdier som er gått tilbake til et annet program . Valgfrie parametere har en standard verdi og ikke trenger en inngang verdi. Rekompileringsprosessen alternativet gjør systemet kompilere prosedyren hver gang den utføres . Krypteringsalternativet gjør at sluttbrukeren å få sluttresultatet uten å lese koden .
2
lagrede prosedyrer kan akseptere input verdier og pass tilbake utdataverdier til programmet kaller den lagrede prosedyrer ved å erklære parametrene . Inndataparameterne kan være valgfritt , hvis du tilordne en standard verdi for dem mens du oppretter prosedyren. Output parametre defineres ved å angi søkeord UTGANG .
CREATE PROSEDYRE sporderscount
@ total_order penger UTGANG , etter
@ ORDER_DATE smalldatetime = NULL , etter
@ customer_var varchar ( 40 ) = '% '
AS
SELECT @ total_order = SUM ( total_order )
FRA bestillinger BLI kunder
PÅ orders.orderID = customers.orderID
WHERE ( ORDER_DATE > = @ date_var )
oG ( CustomerName som @ customer_var )
fremgangsmåten ovenfor har to input parametere og returnerer én utgang parameter . Utdataparameteren er identifisert av OUTPUT søkeordet.
3
Execute eller kjøre en prosedyre ved hjelp av EXEC procedurename syntaks. Skriv inn følgende SQL-setninger for å utføre den lagrede prosedyren : en
erklærer @ mytotalorder penger
EXEC spordercount @ mytotalorder = @ total_order utgang, '2010 - 03-21 ',' D% '
erklære uttalelsen skaper en utgang variabel som vil lagre verdien av produksjonen parameteren i den lagrede prosedyren . Den utføre setningen brukes til å kjøre den lagrede prosedyren . Siden både inndataparameterne har standardverdier , må de ikke bli tildelt en verdi under utføring av prosedyren
4
Tilbake verdier fra lagrede prosedyrer ved å legge følgende uttalelse : .
RETURN @ order_count
ovennevnte uttalelse i en lagret prosedyre vil returnere en verdi og lagre det i en variabel i programmet kaller prosedyren. Du kan enten bruke en retur parameter eller utdataparameteren å passere tilbake en verdi til å kalle programmet . I ovennevnte uttalelse , vil prosedyren returnerer antall rader i tabellen Ordrer .
5
Bruk ALTER PROSEDYRE procedurename kommando til å endre den lagrede prosedyren . Syntaksen er lik den skaper prosedyren . Skriv inn følgende utsagn for å endre prosedyren spordercount å legge til en annen variabel tilstand. Den lagrede prosedyren vil begrense rader basert på tilstanden i bolig i stedet for navnet .
ALTER PROSEDYRE sporderscount
@ order_state varchar ( 30 ) = NULL , etter
@ total_order penger UTGANG , etter
@ ORDER_DATE smalldatetime = NULL
AS
SELECT @ total_order = sum ( total_order )
FRA bestillinger BLI kunder
< p > pÅ orders.orderID = customers.orderID
WHERE ( ORDER_DATE > = @ date_var )
OG ( CustomerState = @ order_state )
6
Slett den lagrede fremgangsmåte ved hjelp av DROP pROSEDYRE procedurename kommandoen. Du kan ikke angre effekten av fallet kommandoen. Slett spordercount lagrede prosedyren ved å skrive inn følgende uttalelse : en
DROP PROSEDYRE sporderscount