declare @sql_pa VARCHAR(20)
declare @date_pa1 datetime,@date_pa2 datetime
declare @i int
set @date_pa1='2020-01-10'
set @date_pa2='2020-01-15'
set @i=1
While (@i<=2)
begin
set @sql_pa='@date_pa'+ltrim(str(@i))
print(@sql_pa)
set @i=@i+1
end
執行后的輸出結果為:
@date_pa1
@date_pa2
我現在想問@sql_pa這個賦值變數當前值為'@date_pa1',時,如何實作print(@date_pa1)結果?(用EXEC試了不行)
想得到如下結果:
Jan 10 2020 12:00AM
Jan 15 2020 12:00AM
uj5u.com熱心網友回復:
想得到如下結果:Jan 10 2020 12:00AM
Jan 15 2020 12:00AM
請問print(@sql_pa)這如何修改?
uj5u.com熱心網友回復:
declare @sql_pa VARCHAR(max)declare @date_pa11 datetime,@date_pa22 datetime
set @date_pa11='2020-01-10'
set @date_pa22='2020-01-15'
declare @i int
set @i=1
While (@i<=2)
begin
set @sql_pa='declare @date_pa1 datetime,@date_pa2 datetime '+' set @date_pa1='''+ cast(@date_pa11 as varchar(50)) +''''+' set @date_pa2='''+ cast(@date_pa22 as varchar(50)) +''''
set @sql_pa=@sql_pa+' select @date_pa'+ltrim(str(@i))
print(@sql_pa)
exec(@sql_pa)
set @i=@i+1
end
這樣就可以exec了
uj5u.com熱心網友回復:

但是這樣只能在結果里顯示,沒辦法在訊息里面顯示出來
uj5u.com熱心網友回復:
我只想這個@sql_pa在WHILE中使用指定對應@date_pa1的值,上面的exec太長了。uj5u.com熱心網友回復:
DECLARE @sql_pa VARCHAR(20)
DECLARE @sql NVARCHAR(100)
DECLARE @x DATETIME
DECLARE @date_pa1 DATETIME , @date_pa2 DATETIME
DECLARE @i INT
SET @date_pa1 = '2020-01-10'
SET @date_pa2 = '2020-01-15'
SET @i = 1;
WHILE ( @i <= 2 )
BEGIN
SET @sql_pa = '@date_pa' + LTRIM(STR(@i))
SET @sql = 'SELECT @x=' + @sql_pa
EXEC sp_executesql @sql , N'@date_pa1 datetime,@date_pa2 datetime,@x datetime OUTPUT' , @date_pa1 , @date_pa2 , @x OUTPUT
PRINT @x
SET @i = @i + 1
END
uj5u.com熱心網友回復:
declare @sql_pa VARCHAR(max)declare @date_pa11 datetime,@date_pa22 datetime
set @date_pa11='2020-01-10'
set @date_pa22='2020-01-15'
declare @i int
set @i=1
While (@i<=2)
begin
----declare @xxxx datetime
set @sql_pa='declare @xxxx datetime,@date_pa1 datetime,@date_pa2 datetime '+' set @date_pa1='''+ cast(@date_pa11 as varchar(50)) +''''+' set @date_pa2='''+ cast(@date_pa22 as varchar(50)) +''''
set @sql_pa=@sql_pa+' set @xxxx =(select @date_pa'+ltrim(str(@i))+') print(@xxxx)'
--print(@sql_pa)
exec(@sql_pa)
----print(@xxxx)
set @i=@i+1
end
這個可以了
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
還有沒有簡單方法,我就想通過@sql_pa這個值,指向變數@date_pa1~N對應的值轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/230086.html
標籤:基礎類
上一篇:mysql視圖觸發器
