目前尚未找到其他簡化方法。
如下為原本的問題內容
//-------------------------------------------------
如標題,假設有一個table變數@tempTable1
,裡面有幾筆資料,若我要將資料逐筆印出,會先將@tempTable1
的資料insert到@tempTable2
同時賦予序號,再跑迴圈逐筆印出資料,實作方式如下,想詢問是否有更精簡的方式呢?(例如不用給予序號就能逐筆印出等)
[定義]
declare @varField1 nvarchar(4000)
, @varField2 nvarchar(4000)
, @varField3 nvarchar(4000)
, @varCount int = 0
, @varSum int = 0
declare @tempTable1 table (
Field1 nvarchar(4000)
, Field2 nvarchar(4000)
, Field3 nvarchar(4000)
)
declare @tempTable2 table (
RowId int identity(1,1)
, Field1 nvarchar(4000)
, Field2 nvarchar(4000)
, Field3 nvarchar(4000)
)
--建立測試資料
insert @tempTable1(Field1, Field2, Field3)
values
('value1-1','value1-2','value1-3')
, ('value2-1','value2-2','value2-3')
, ('value3-1','value3-2','value3-3')
[實作印出資料]
delete @tempTable2
insert @tempTable2
select * from @tempTable1
select @varSum=count(*) from @tempTable2
while(@varCount < @varSum)
begin
set @varCount = @varCount + 1
select
@varField1 = Field1
, @varField2 = Field2
, @varField3 = Field3
from @tempTable2
where RowId = @varCount
print @varField1 + ' / ' + @varField2 + ' / ' + @varField3
end