SET Lokale Variable in SQL auf einem 2000 SERVER
SET @local_variable akzeptiert keine Variablen bei Ausführung von EXEC
Es geht um eine gespeicherte Prozedur in einem MS-Access Projekt.
Nun soll Spalte_y nach dem jeweils in @<Variable> beim Aufruf übergebenen Wert abgefragt werden
Syntax ? EXEC bei SET nicht zuässig ? oder ?
Ich vermute, dass @<VariableTest> im Fall "SET @cmdstr ..." als beliebige Zeichenfolge (im Gesamtstring) an @cmdstr übergeben wird und nicht als deklarierte Variable erkannt wird. Wie aber kann das erreicht werden ?
PCFJKG
Alter Procedure <Proz_Name>
(
@<Variable> char(4),
)
As
DECLARE @CmdStr varchar(2000)
DECLARE @VariableTest decimal(5,2)
/* Angenommen, Spalte_y wird nach dem Wert 20 abgefragt */
SET @<VariableTest> = (SELECT SUM(<Spalte_x>) FROM <Table> WHERE (<Spalte_y> = 20))
/* Die @<Variabletest> enthält ordnungsgemäß die Summe. */
Nun soll Spalte_y nach dem jeweils in @<Variable> beim Aufruf übergebenen Wert abgefragt werden
SET @CmdStr = 'SET @<VariableTest> = (SELECT SUM(<Spalte_x>) FROM <Table> WHERE (<Spalte_y> = ' + @<Variable> + '))'
EXEC(@CmdStr)
/* Die @<VariableTest> enthält NULL. */
Ich vermute, dass @<VariableTest> im Fall "SET @cmdstr ..." als beliebige Zeichenfolge (im Gesamtstring) an @cmdstr übergeben wird und nicht als deklarierte Variable erkannt wird. Wie aber kann das erreicht werden ?
PCFJKG
Please also mark the comments that contributed to the solution of the article
Content-Key: 93862
Url: https://administrator.de/contentid/93862
Printed on: April 27, 2024 at 04:04 o'clock
2 Comments
Latest comment