使用表變數或臨時表遍歷資料

2022-05-03 22:36:17 字數 2114 閱讀 2106

--

方法1:使用表變數

--宣告表變數

declare

@temp

table

( empid

int,

firstname

nvarchar(10

), lastname

nvarchar(20

) );

--將源表中的資料插入到表變數中

insert

into

@temp

(empid, firstname, lastname )

select empid,firstname,lastname from

hr.employees

order

byempid;

--宣告變數

declare

@empid

asint

,

@firstname

asnvarchar(10

),

@lastname

asnvarchar(20

);

while

exists(select empid from

@temp)

begin

--也可以使用top 1

setrowcount

1select

@empid

= empid, @firstname

= firstname,@lastname

= lastname from

@temp

;

update hr.employees set fullname=

@firstname+'

'+@lastname

where empid=

@empid

;

setrowcount

0delete

from

@temp

where empid=

@empid;

end--

方法2:使用臨時表

--建立臨時表

ifobject_id('

tempdb.dbo.#tempemployees

','u

') is

notnull

drop

table

dbo.#tempemployees;

goselect

empid,firstname,lastname

into

dbo.#tempemployees

from

hr.employees

order

byempid;

--select * from dbo.#tempemployees;

--宣告變數

declare

@empid

asint

,

@firstname

asnvarchar(10

),

@lastname

asnvarchar(20

);

while

exists(select empid from

dbo.#tempemployees)

begin

--也可以使用top 1

setrowcount

1select

@empid

= empid, @firstname

= firstname,@lastname

= lastname from

dbo.#tempemployees;

update hr.employees set fullname=

@firstname+'

'+@lastname

where empid=

@empid

;

setrowcount

0delete

from dbo.#tempemployees where empid=

@empid;

end

臨時表與表變數

臨時表 表變數的比較 1 臨時表 臨時表包括 以 開頭的區域性臨時表,以 開頭的全域性臨時表。a 儲存 不管是區域性臨時表,還是全域性臨時表,都會放存放在tempdb資料庫中。b 作用域 區域性臨時表 對當前連線有效,只在建立它的儲存過度 批處理 動態語句中有效,類似於c語言中區域性變數的作用域。全...

表變數與臨時表

什麼情況下使用表變數?什麼情況下使用臨時表?表變數 declare tb table id int identity 1,1 name varchar 100 insert tb select id,name from mytable where name like zhang 臨時表 select...

mysql表變數臨時表 表變數和臨時表詳解

首先讓我們來看看什麼是表變數和臨時表。sql server 表變數 1.初識表變數 表變數在sql server 2000中首次被引用。表變數的定義和建立乙個表大致相同,只不過是使用declare variable而不是create table,表變數定義包括列定義,列名,資料型別和約束 可用的約束...