2016-11-03 6 views
0

Ich bin neu in SQL und versuche, eine Variable aus dem Wert von einer Funktion Wert zuweisen, aber ich bin nicht in der Lage, den Wert zu erhalten.Verwenden einer Zeichenfolge zum Abrufen einer Spalte aus einer Funktion

Meine Frage ist:

DECLARE @StartDate DATETIME,@ReferenceDateString VARCHAR(10)='Q1_CY' ; 

Select @[email protected] from dbo.Dates(GETDATE()); 

Wenn ich die obige Abfrage laufen bekomme ich nur den Wert Q1_CY assgined zu @StartDate eher als der tatsächliche Wert aus der Funktion.

Wenn ich nicht eine Variable dann sieht verwenden möchte meine Abfrage wie:

Select @StartDate=Q1_CY from dbo.Dates(GETDATE()); 

Gibt es eine Möglichkeit, es zu tun?

+0

Sie können versuchen, 'SET @StartDate = SELECT ....'. – FDavidov

+0

Dazu müssen Sie dynamisches SQL verwenden. Wenn Sie SQL lernen, überspringen Sie dies und gehen Sie zu etwas anderem über, bis Sie mit der Sprache vertrauter sind. –

+0

@GordonLinoff können Sie bitte das Dynamic SQL posten, so dass ich es verstehen und ausprobieren kann, da ich völlig neu in SQL bin, aber neu in Dynamic SQL bin. –

Antwort

0

Es ist ziemlich umständlich in dynamischen SQL, weil Sie einen Ausgabeparameter müssen:

declare @StartDate DATETIME, 
     @ReferenceDateString VARCHAR(10)='Q1_CY' ; 
declare @sql nvarchar(max); 

set @sql = 'Select @StartDate = @ReferenceDateString from dbo.Dates(GETDATE())'; 

set @sql = replace(@sql, '@ReferenceDateString', @ReferenceDateString); 

exec sp_executesql @sql, N'@StartDate datetime output', @[email protected]; 
Verwandte Themen