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