/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MSSQL] EXEC i SP der skal returnere en va~
Fra : Stefan Kristensen


Dato : 12-02-03 13:04

Hej NG.

Jeg har en procedure, der skal returnere en enkelt variable fra en tabel:
@Value er defineret som output og @Name som input.
SET @Value = (SELECT Value FROM Table WHERE Name = @Name)
Det virker jo også meget fint, men nu skal den kunne bruges på flere
forskellige tabeller. Jeg har derfor en ekstra variabel, @Tabel, der skal
bruges i en exec:
EXEC('SELECT Value FROM "' + @Table + '" WHERE Name = "' + @Name +'"')
Det virker også fint, men hvordan får jeg resultatet af lagt i @Value
variablen?

c",)
Stefan



 
 
Peter Lykkegaard (12-02-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 12-02-03 15:53

Som svar på skriblerier nedfældet af Stefan Kristensen :


> Jeg har en procedure, der skal returnere en enkelt variable fra en
> tabel: @Value er defineret som output og @Name som input.
> SET @Value = (SELECT Value FROM Table WHERE Name = @Name)
> Det virker jo også meget fint, men nu skal den kunne bruges på flere
> forskellige tabeller. Jeg har derfor en ekstra variabel, @Tabel, der
> skal bruges i en exec:
> EXEC('SELECT Value FROM "' + @Table + '" WHERE Name = "' + @Name +'"')
> Det virker også fint, men hvordan får jeg resultatet af lagt i @Value
> variablen?
>
Kik evt på Execute i BOL i stedet for
Der kan du angive dine parametre etc

Der er et par drawbacks mht konstruktion af din SQL streng
Den _skal_ tilskrives en variable (nvarchar) før kaldet med Execute

Ellers spiller det bare

mvh/Peter Lykkegaard




Stefan Kristensen (12-02-2003)
Kommentar
Fra : Stefan Kristensen


Dato : 12-02-03 16:26

> Kik evt på Execute i BOL i stedet for
> Der kan du angive dine parametre etc
Mjae... Jeg har kigget, men så vidt jeg kan se, går eksemplet på at kalde
proceduren med parametrer.
Jeg kan ikke bruge SET @Value = EXEC() i proceduren, sp hvad gør jeg så?
Jeg kalder proceduren fra vb vha, et command object, og kan ikke lige
gennemskue eksemplet i BOL.

> Der er et par drawbacks mht konstruktion af din SQL streng
> Den _skal_ tilskrives en variable (nvarchar) før kaldet med Execute
Øh? Mener du @Table variablen eller...?

mvh
Stefan



Peter Lykkegaard (12-02-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 12-02-03 16:41

Som svar på skriblerier nedfældet af Stefan Kristensen :

>> Kik evt på Execute i BOL i stedet for
>> Der kan du angive dine parametre etc

> Mjae... Jeg har kigget, men så vidt jeg kan se, går eksemplet på at
> kalde proceduren med parametrer.
> Jeg kan ikke bruge SET @Value = EXEC() i proceduren, sp hvad gør jeg
> så? Jeg kalder proceduren fra vb vha, et command object, og kan ikke
> lige gennemskue eksemplet i BOL.
>
Jeg tænkte noget ala

Set @SQL = N'SET @Value = Value FROM ' + @Table + ' WHERE Name = ' + @Name
+'

Execute @SQL osv

>> Der er et par drawbacks mht konstruktion af din SQL streng
>> Den _skal_ tilskrives en variable (nvarchar) før kaldet med Execute

> Øh? Mener du @Table variablen eller...?
>
Hele strengen

mvh/Peter Lykkegaard



Stefan Kristensen (12-02-2003)
Kommentar
Fra : Stefan Kristensen


Dato : 12-02-03 16:57

CREATE PROCEDURE test
@table varchar(50),
@field varchar(8),
@value varchar(256) OUTPUT
as
DECLARE @SQL varchar(512)
SET @SQL = N'SET @Value = (SELECT FieldValue FROM ' + @Table + ' WHERE
FieldName = ' + @Field + ')'
EXECUTE (@SQL)

giver følgende fejl: "Must declare the variable '@Value'." ??

stefan



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste