0

SQL SERVER のクエリに問題があり、次の動的クエリを作成しました。

declare @cont int
declare @sqlquery varchar(1000)
declare @sqlquery2 varchar(500)
declare @sqlquery3 varchar(2000)
declare @anho varchar(4)

set nocount on

drop table ti

set @anho = (select year(getdate()))
set @cont = 1
set @sqlquery = ''

while @cont <= 12
begin

set @sqlquery2 = '(a.['+@anho + RIGHT('00'+cast(@cont as varchar),2)+']+b.['+@anho + RIGHT('00'+cast(@cont as varchar),2)+']+c.['+@anho + RIGHT('00'+cast(@cont as varchar),2)+']+d.['+@anho + RIGHT('00'+cast(@cont as varchar),2)+']) as ['+@anho + RIGHT('00'+cast(@cont as varchar),2)+'],'
exec (@sqlquery2)

set @sqlquery = @sqlquery + @sqlquery2
exec (@sqlquery)

set @Cont = @Cont + 1
end

exec(@sqlquery)

set @sqlquery3 = 'select a.gestion,'+@sqlquery+' '+quotename('GES08','''')+' as COD_GES into ti from Llamadas_Mensual_Oro_Final a inner join Llamadas_Mensual_plata_Final b on a.gestion = b.gestion inner join Llamadas_Mensual_Reten_Final c on b.gestion = c.gestion inner join Llamadas_Mensual_cable_Final d on c.gestion = d.gestion'

exec(@sqlquery3)

set nocount off

select * from ti

さて、私が抱えている問題は、ストア プロシージャを使用してクエリを実行するときです。問題はありませんが、コードのみを実行すると、SQL SERVER に次のようなエラー メッセージが表示されます。

メッセージ 102、レベル 15、状態 1、行 1 'a' 付近の構文が正しくありません。

クエリは問題ありませんが、エラー メッセージを非表示にしたいのですが、この問題を解決できる人はいますか?

4

3 に答える 3

0

この部分は完全に間違っています:

set @sqlquery2 = '(a.['+@anho + RIGHT('00'+cast(@cont as varchar),2)+']+b.['+@anho + RIGHT('00'+cast(@cont as varchar),2)+']+c.['+@anho + RIGHT('00'+cast(@cont as varchar),2)+']+d.['+@anho + RIGHT('00'+cast(@cont as varchar),2)+']) as ['+@anho + RIGHT('00'+cast(@cont as varchar),2)+'],'
exec (@sqlquery2)

このステートメントには SELECT も FROM もありません。決して実行されません。これまで。この動的クエリが機能する前に、適切に実行される実際の SQL ステートメントを作成する必要があります。

于 2013-07-23T19:38:05.493 に答える