小さなタスクに取り組んでいるときに、状況に出くわしました
DECLARE @i INT ,
@l INT ,
@desc CHAR(50)
SET @l = 1
SET @i = 20
WHILE ( @l <= @i )
BEGIN
SELECT 'Test' AS 'Test'+@l
SET @l = @l + 1
END
このコードでは、@l の値で列名が変更されたときに常にループを実行する必要があります。
小さなタスクに取り組んでいるときに、状況に出くわしました
DECLARE @i INT ,
@l INT ,
@desc CHAR(50)
SET @l = 1
SET @i = 20
WHILE ( @l <= @i )
BEGIN
SELECT 'Test' AS 'Test'+@l
SET @l = @l + 1
END
このコードでは、@l の値で列名が変更されたときに常にループを実行する必要があります。
ステートメントを動的に作成し、EXECUTEまたはsp_executesqlを使用してステートメントを実行する必要があります。
DECLARE @i INT ,
@l INT ,
@desc CHAR(50)
SET @l = 1
SET @i = 20
WHILE ( @l <= @i )
BEGIN
EXEC ('SELECT ''Test'' AS Test'+@l)
SET @l = @l + 1
END
動的 SQL の世界に入る際の推奨読書: 動的 SQLの呪いと祝福
代わりに sp_executesql を使用します。
DECLARE @i INT ,
@l INT ,
@desc CHAR(50),
@SQL NVARCHAR(100)
SET @l = 1
SET @i = 20
WHILE ( @l <= @i )
BEGIN
SET @SQL = N'SELECT ''Test'' AS Test'+CAST(@l AS NVARCHAR(10))
EXEC sp_executesql @SQL
SET @l = @l + 1
END