Avatar billede roadrunr Nybegynder
13. februar 2003 - 10:21 Der er 3 kommentarer og
1 løsning

Return value fra Exec()

Hvordan modtager jeg en værdi tilbage fra:

EXEC(SELECT [Name] FROM [tblNames])

Det er specielt med henblik på dynamisk SQL, hvor man har variable kolonne og tabel navne. F.eks.:

DECLARE @Result varchar(50)
EXEC(SELECT @MyName = [Name] FROM @TableName)

Her vil jeg gerne gemme værdien af @MyName i @Result. Ala:

SELECT @Result = @MyName


Hvordan gør jeg det?
Avatar billede mikkelpr Nybegynder
13. februar 2003 - 11:06 #1
Det kan du ikke.

EXEC er begrænset til ikke at kunne bruge variable defineret "ude fra".

dynamisk sql er i øvrigt noget skidt især i en stored procedure. Det bedste er at generere den dynamiske sql i klienten og sende den til databasen som en TextCommand.
Avatar billede roadrunr Nybegynder
13. februar 2003 - 11:11 #2
Jow man kan.. jeg har i mellem tiden fundet løsningen.

Se følgende eksempel, som jeg har fundet på nettet. Det er specielt detaljen med "Exec sp_executesql":

declare @roll_up_flag int --variable to hold flag
declare @caseroom_db varchar(30)
declare @sqlcmd nvarchar(500)
select @caseroom_db='caseroom2_test'

select @sqlcmd='select @roll_up_flag=cast(thevalue as int) from ' + @caseroom_db + '.webuser.list_variables
where thelabel=''AOCostRollupFlag'''
exec sp_executesql @sqlcmd,N'@roll_up_flag int output', @roll_up_flag output
Avatar billede roadrunr Nybegynder
13. februar 2003 - 11:11 #3
Lukker indlæg...
Avatar billede mikkelpr Nybegynder
13. februar 2003 - 11:35 #4
joeh - men ret beset er det jo så ikke EXEC(sql statement) men EXEC STOREDPROC du bruger (lidt flueknepperi, I know :-)). Ved at kalde sp_executesql explicit,gør du bare hvad sql serveren selv gør, når den modtager en select statement.

Uanset det kan lade sig gøre med sp_executesql, rokker det dog ikke ved, at det er upraktisk at kode dynamisk sql på serveren. Men på den anden side - der er jo nogle gange, hvor det er den eneste mulighed.

held og lykke med det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester