Hej,
vill dela upp en stor stored procedure i olika subbar, men hur gör jag det? dvs hur skapar jag subbar i sql?
11 svar · 523 visningar · startad av Gimbo
Hej,
vill dela upp en stor stored procedure i olika subbar, men hur gör jag det? dvs hur skapar jag subbar i sql?
Vad är @jupp för parameter?
Det är det du som bestämmer.
kan jag inte bara köra EXEC minsp?
för alla parametrar som skall köras finns i den sp'n som skall anropas
Om SPn du skall köra inte kräver några inparametrar anger du inte heller några. Om SPn du skall köra kräver inparametrar så anger du dessa.
ok tackar, så jag anger de i filen där jag anropar den sp'n som skall köras och inte i själva sp'n som anropas?
om det är flera parametrar ser det ut så här då: EXEC minSP @par1, @par2, @par3 ... ?
som du ser så e jag rätt ny på det här med SQL :)
tack för all hjälp!
ok tackar, så jag anger de i filen där jag anropar den sp'n som skall köras och inte i själva sp'n som anropas?
Om SP:n kräver att du bifogar värden så gör du det på alla ställen där du anropar SP:n. SP:n måste då också vara skriven så den tar emot parametrarna.
om det är flera parametrar ser det ut så här då: EXEC minSP @par1, @par2, @par3 ... ?
Ja, eller
Exec minSP 'foo', 'bapp', 4711
, beroende på vad du vill skicka till proceduren.
måste störa igen,
så säg att jag har en fungerande sp som börjar så här ungefär:
@foo varchar(8) = NULL,
@foo1 bigint = NULL,
AS
SET NOCOUNT ON
DECLARE @nbr int
DECLARE @Length int
.
.
.
hur ska jag anropa den från en annan sp?
är det bara att köra en
EXEC sp @foo, @foo1 ??
och sedan ta bort de variablarna från den fungernade sp'n??
Om du i din kallande procedur har variabler som heter @foo och @foo1, så visst. Annars skickar du bara värden.
Men vad menar du att du ska ta bort från den fungerande sp:n?
det jag gör är att bryta ner en större procedur till flera mindre, och i den större proceduren så fungerar allt, jag har all deklerering utav procedurer i de mindre procedurerna som jag nu vill kalla från en huvud procedure:
EXEC sp1
EXEC sp2
EXEC sp3
.
.
.
och då undrar jag om jag skall behålla:
@foo som finns i den nu mindre proceduren eller om jag ska ta bort den därifrån och lägga den i huvud proceduren så att det ser ut på följande vid:
EXEC sp1 @foo
EXEC sp2
EXEC sp3
eller kan jag bara köra:
EXEC sp1
EXEC sp2
EXEC sp3
eftersom @foo finns i sp1?
Om @foo är något du skapar och tilldelar ett värde inuti den "inre" proceduren finns ingen anledning att skapa den i den "yttre" och skicka in, om du nu inte vill kunna göra på det sättet. Det är helt och hållet upp till dig.