webForumDet fria alternativet

sub procedures

11 svar · 523 visningar · startad av Gimbo

GimboMedlem sedan dec. 20001 630 inlägg
#1

Hej,

vill dela upp en stor stored procedure i olika subbar, men hur gör jag det? dvs hur skapar jag subbar i sql?

emissionMedlem sedan dec. 19996 095 inlägg
#2

Skapa flera SP. Anropa dem inifrån varandra


EXEC minandraSP @jupp
GimboMedlem sedan dec. 20001 630 inlägg
#3

Vad är @jupp för parameter?

@ndersMedlem sedan juni 200026 914 inlägg
#4

Det är det du som bestämmer.

GimboMedlem sedan dec. 20001 630 inlägg
#5

kan jag inte bara köra EXEC minsp?

för alla parametrar som skall köras finns i den sp'n som skall anropas

@ndersMedlem sedan juni 200026 914 inlägg
#6

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.

GimboMedlem sedan dec. 20001 630 inlägg
#7

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!

@ndersMedlem sedan juni 200026 914 inlägg
#8

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.

GimboMedlem sedan dec. 20001 630 inlägg
#9

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??

@ndersMedlem sedan juni 200026 914 inlägg
#10

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?

GimboMedlem sedan dec. 20001 630 inlägg
#11

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?

@ndersMedlem sedan juni 200026 914 inlägg
#12

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.

124 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
121 ms — hämta tråd, inlägg och bilagor (db)