Lagrade procedurer är körbara databasobjekt består av flera SQL-satser . De hjälper till att förenkla interaktionen mellan databasen och slutanvändare som inte har tillräckligt med kompetens för att skriva komplexa SQL-frågor . Du kan använda lagrade procedurer för att erbjuda tillgång , dataverifiering och förenkla komplex bearbetning som kräver flera SQL-satser . Lagrade procedurer kan acceptera input parametrar , returvärden och genomföra looping logik som om , medan och fall uttalanden . Saker du behöver
Microsoft SQL Server Query Analyzer
Visa fler instruktioner
1
Skapa en lagrad procedur genom att använda CREATE syntax FÖRFARANDE procedurename . Ange följande uttalanden för att skapa en lagrad procedur som kallas sporderscopy som kopierar innehållet i tabellen Order i OrdersCopy tabellen .
SKAPA FÖRFARANDE sporderscopy
AS
SELECT * i OrdersCopy
FROM Orders
ovanstående procedur kommer att skapa en kopia av tabellen Order . Du kan också lägga till parametrar , kompilera och lägga kryptering med skapa förfarande uttalande . Parametrarna hjälper dig att acceptera värden i det förfarande som krävs för det önskade resultatet . De utgående parametrar används för att lagra värden som skickas tillbaka till ett annat program . Valfria parametrar har ett standardvärde och inte behöver ett ingångsvärde . Den kompilera alternativet gör systemet kompilera förfarandet varje gång den körs . Den kryptering gör att slutanvändaren att få slutresultatet utan att visa koden .
2
Lagrade procedurer kan acceptera ingångsvärden och skicka tillbaka utsignalvärden till programmet anropa lagrade procedurer genom att förklara de parametrar . De ingående parametrarna kan vara frivilligt, om du tilldelar ett standardvärde till dem när du skapar proceduren . De utgående parametrar definieras genom att ange sökord OUTPUT .
SKAPA FÖRFARANDE sporderscount
@ total_order pengar OUTPUT ,
@ ORDER_DATE smalldatetime = NULL ,
@ customer_var varchar ( 40 ) = ' % '
AS
SELECT @ total_order = SUMMA ( total_order ) katalog
FRÅN order GÅ kunder
PÅ orders.orderID = customers.orderID
WHERE ( ORDER_DATE > = @ date_var ) katalog
oCH ( CustomerName som @ customer_var ) katalog
ovanstående procedur har två inparametrar och returnerar en utgångsparameter . Utgången parameter identifieras med OUTPUT nyckelordet .
3
Execute eller köra en procedur genom att använda EXEC procedurename syntax . Ange följande SQL-satser för att köra den lagrade proceduren :
FÖRKLARA @ mytotalorder pengar
EXEC spordercount @ mytotalorder = @ total_order utgång , '2010 -03- 21 ' , ' D % '
förklara uttalandet skapar en utsignal variabel som kommer att lagra värdet för parametern output i den lagrade proceduren . Den exekvera uttalande används för att köra den lagrade proceduren . Eftersom båda de ingående parametrarna har standardvärden , behöver de inte tilldelas ett värde medan du utför proceduren
4
returvärden från lagrade procedurer genom att följande uttalande : . @
RETURN order_count
ovanstående uttalande i en lagrad procedur returnerar ett värde och förvara den i en variabel i programmet anropa proceduren . Du kan antingen använda en återgång parameter eller utgångsparametern att passera tillbaka ett värde till det anropande programmet . I ovanstående uttalande , kommer förfarandet returnera antalet rader i tabellen Order .
5
Använd ALTER kommandot GÅNG procedurename att ändra den lagrade proceduren . Syntaxen liknar skapa förfarande . Ange följande uttalanden för att ändra förfarandet spordercount att lägga till ytterligare en variabel stat . Den lagrade proceduren kommer att begränsa raderna baserat på bosättningslandet i stället för namnet .
ALTER FÖRFARANDE sporderscount
@ order_state varchar ( 30 ) = NULL ,
@ total_order pengar OUTPUT ,
@ ORDER_DATE smalldatetime = null
AS
SELECT @ total_order = sum ( total_order ) katalog
FRÅN order GÅ kunder
ON orders.orderID = customers.orderID
WHERE ( ORDER_DATE > = @ date_var ) katalog
OCH ( CustomerState = @ order_state )
6
Radera den lagrade proceduren genom att använda DROP kommandot fÖRFARANDE procedurename . Du kan inte ångra effekten av nedgången kommandot . Radera spordercount lagrad procedur genom att ange följande uttalande :
DROP FÖRFARANDE sporderscount