2016-11-03 39 views
0

私はSQLを初めて使用しており、関数から返された値から変数に値を代入しようとしていますが、値を取得できません。文字列を使用して関数からカラムを取得する

私のクエリは次のとおりです。

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

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

私は上記のクエリを実行すると、私はちょうど@StartDateではなく、関数から実際の値にassgined値Q1_CYを取得します。

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

はそれを行う方法があります:私は、変数を使用しない場合

はその後、私のクエリは次のようになりますか?

+0

をあなたは 'SET @StartDate = SELECT ....'てみてください。 – FDavidov

+0

これを行うには、動的SQLを使用する必要があります。あなたがSQLを学んでいるなら、あなたは言語に慣れるまで、これをスキップして別のものに進んでください。 –

+0

@ GordonLinoffあなたはダイナミックSQLを投稿して、私が理解できるようにしてください。私は全く新しいものではなく、ダイナミックSQLを初めて使っています。 –

答えて

0

あなたが出力パラメータ必要があるため、動的SQLでかなり厄介です:

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]; 
関連する問題