![]() |
Re: Spaltenname als Parameter in Stored Procedure
Zitat:
![]() |
Re: Spaltenname als Parameter in Stored Procedure
@schima
Hast du auch eine Idee wie man Output Parameter auswerten kann ?
SQL-Code:
Wenn man nur Eingabeparameter übergibt funtkioniert die Abfrage ...
DECLARE @Statement NVARCHAR(500)
DECLARE @Parameter NVARCHAR(500) DECLARE @Values NVARCHAR(500) DECLARE @EResult varchar(50) SET @Statement = N'SELECT @EResult=Vorname FROM Mitarbeiter WHERE ID = @EInput' SET @Parameter = N'@EInput INT, @EResult VarChar(50) OUTPUT ' exec sp_executesql @Statement, @Parameter , @EInput=11, @EResult = '' SELECT @EResult -- ergibt NULL
SQL-Code:
Ich denke wir drehen uns da im Kreis, weil der Ausgabeparameter aus EXEC(UTE) wieder nicht rauskommt ...
DECLARE @Statement NVARCHAR(500)
DECLARE @Parameter NVARCHAR(500) DECLARE @Values NVARCHAR(500) SET @Statement = N'SELECT Vorname FROM Mitarbeiter WHERE ID = @EInput' SET @Parameter = N'@EInput INT ' exec sp_executesql @Statement, @Parameter , @EInput=11 -- Vorname -- ------- -- Susanne -- 1 Row Affected :hi: (bin jetzt erstmal eine Weile weg ...) |
Re: Spaltenname als Parameter in Stored Procedure
Das mit sp_executesql scheint wohl doch interessant zu sein. Habs jetzt aber mal so gelöst, indem ich mir eine feste Tabelle erzeuge namens Spaltennamen. Meine SP sieht dann so aus:
create procedure spQueryMail(
SQL-Code:
Ich speichere den gewünschten Spaltennamen in einer gesonderten Tabelle. Meinen erzeugten Record finde ich anschliessend leicht wieder über die generierte GUID.
create procedure spQueryMail(
@P_ID int, @Spalte varchar(60), @MailAddress varchar(255) output) as declare @Code varchar(300) declare @PA_ID int declare @GUID varchar(40) set @PA_ID = (Select pa.ID from partner pa, property p where p.Manager=pa.ID and p.ID=@P_ID) set @GUID = newid() set @Code = 'insert Spaltennamen select ''' + @GUID + ''', ct.Code from partner p join commtyp ct on p.' + @Spalte + '=ct.ID where p.ID = ' + cast(@PA_ID as varchar(10)) + ' and ct.IsByEMail=1' execute(@Code) set @Code = (select Wert from Spaltennamen where GUID=@GUID) delete from Spaltennamen where GUID=@GUID set @MailAddress = isnull((select pc.Number from PartnerComm pc, Partner pa, CommTyp ct where pc.Partner=pa.ID and pc.CommTyp=ct.ID and ct.Code=@Code and pa.ID=@PA_ID),'') Das klappt soweit, ist aber sicherlich weit entfernt von "Performance Tuning", da ja jedesmal ein Record in die Tabelle geschrieben wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz