webForumDet fria alternativet

Anropa en stored procedure från en annan...

Databaser & SQL

4 svar · 315 visningar · startad av tonyh

Medlem sedan okt. 2002107 inlägg
Frågan#1

Hej...
Jag skulle vilja anropa en Store Procedure från en annan och gör detta genom att använda exec(...) kommandot!

Problemet uppstår då de SP:n jag anropar(sparar data) returnerar ett id med hjälp av en select.

-- Save dafault values
EXEC spErrand_SaveAttribute null, 'text', @ErrandTypeId, 'Subject','Skriv in ärendetitel', null, null, 1, null, 1, 1
EXEC spErrand_SaveAttribute null, 'text', @ErrandTypeId, 'Description','Förklarande text', null, null, 1, null, 1, 1

-- Return ErrandTypeId
SELECT @ErrandTypeId AS ErrandTypeId

Ur denna SP vill jag ha ut ErrandTypeId(görs via ASP-sida) vilket jag inte lyckas p.g.a. de två anrop som görs innan som returnerar ett id.

Jag har testat med att sätta nocount(SET NOCOUNT ON) vilket inte hjälper. Finns det något sätt att få SQL-Server att förstå att man inte är intresserad av värdet SP:n returnerar???

Tack!
/ Tony H

Medlem sedan dec. 200012 464 inlägg
#2

Du kan använda nextrecordset om du har flera resultatset

set rs = connect.execute("exec p.....") 'första resultatet
set rs = rs.nextrecordset() 'andra resultat
set rs = rs.nextrecordset() 'tredje resultat
Medlem sedan okt. 2002107 inlägg
#3

Jag skulle vilja lösa detta på db-nivå, d.v.s göra så att dessa "onödiga" recordset aldrig returneras...

Om jag bara vill runt problemet kan jag ju byta plats på anropen och göra min SELECT innan jag sparar undan variabler och sedan slippa hoppa igenom recordset...

Medlem sedan dec. 200012 464 inlägg
#4

Då måste du låta bli att göra dessa select: lägga resultatet i en temptabell eller göra return eller skicka som utparameter.

Medlem sedan okt. 2002107 inlägg
#5

Hmmm...
Ok, tack... Jag tänkte om man kanske kunde använda sig av något systemprocedur typ "sp_executesql"(vet ej om denna klarar exekvera andra store procedures).

Hmmm snyggaste lösningen blir kanske att på något sätt ta hand om det returnerade värdet, t.ex. lägga i en temptabell som du föreslår...
...tack för hjälpen LarsG!!!

mvh / Tony H

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)