在實際的開發中,我們可能遇到的問題是,在一個存儲過程里面,我們可能要返回多段sql的結果集,但是最終怎么把多個結果集合成一塊呢,那么這個時候臨時表變量就來了
declare @tmp table --聲明表變量
(
id int identity(1,1), --字段 必須和插入表變量里的數量一一對應
Name varchar(60),
[Description] varchar(60),
Category varchar(60)
)
insert @tmp
select Book.Name,Book.[Description],Book.Category from Book
select * from @tmp
這是正常的sql寫法,注意的是: select 到from中間的字段一定要和表變量里的字段一樣,順序,數量一一對應
下面是存儲過程的寫法:
create proc P_getSelect
as
begin
declare @tmp table --聲明表變量
(
id int identity(1,1),
Name varchar(60),
[Description] varchar(60),
Category varchar(60)
)
insert @tmp
select Book.Name,Book.[Description],Book.Category from Book
declare @tmp2 table
(
id int identity(1,1),
Name varchar(60),
[Description] varchar(60),
Category varchar(60)
)
insert @tmp2 --聲明表變量2 這里為了方便 我把一個表的數據分別放到兩個表變量里了
select Book.Name,Book.[Description],Book.Category from Book
select t.*,tt.* from @tmp t ,@tmp2 tt
end
exec P_getSelect