sql 中 table變數的使用

2021-10-01 08:57:29 字數 1837 閱讀 3417

sql server 2000 新增了table型資料:table型資料不能用來定義列的型別,只能用作t-sql變數或者作為自定義函式的返回值。

sql server 2000支援兩種型別的函式:內建函式和使用者定義函式。內建函式只允許t-sql 語句呼叫而不能更改使用。

使用者定義函式可以根據需要定義自己所需的函式。使用者定義函式可以帶引數,也可以不帶引數,但只能返回單值。正是由於這個原因sql server 2000增加了table型資料,其值可以是整型字元型或數值型。文中用乙個簡單的使用者定義函式說明了使用者定義函式的基本結構。

table 資料型別只能用於定義 table 型別的區域性變數或使用者定義函式的返回值。該資料型別主要用於臨時儲存一組行,這些行將作為錶值函式的結果集返回。可以將函式返回值和變數宣告為table型別

table 型別變數的行為類似於區域性變數,有明確定義的作用域。該作用域為宣告該變數的函式、儲存過程或批處理。

在儲存過程中使用table型別變數與使用臨時表相比,減少了儲存過程的重新編譯量。

涉及table型別變數的事務只在table型別變數更新期間存在。這樣就減少了table型別變數對鎖定和記錄資源的需求。 

不支援在表變數之間進行賦值操作。另外,由於table型別變數作用域有限,並且不是持久資料庫的一部分,因而不受事務回滾的影響。

不支援在table型別變數之間進行賦值操作。另外,由於table型別變數作用域有限,並且不是持久資料庫的一部分,因而不受事務回滾的影響。

select * from dbo.userdb

/*定義table型別的變數和建立表、變數的許多地方都是相同的。*/

declare @dbtable table(id int identity(1,1),oid int,number char(10) not null,name nvarchar(50) not null,phone nvarchar(20))

insert into @dbtable(oid,number,name,phone)

select top 10 id,number,name,phone from dbo.userdb where len(number)>9 and len(name)>0

select * from @dbtable

/*對table變數裡面的資料進行增刪改,不會影響的真實table中的資料*/

update @dbtable set name='修改table變數裡面的值' where id=1

delete from @dbtable where id=1

insert into @dbtable(oid,number,name,phone) values(11,'1990092121','自定義','1234567')

select * from @dbtable

select * from dbo.userdb where id=3

select * from dbo.userdb where number='1990092121'

用到是定義變數時的declare但是後面卻和建立錶用的格式是相同的。但是在呼叫table型別變數時又體現出它具有表的某些性質。在我個人看來table型別的變數是具有表和一般變數的交集的特性。

通過編寫函式來實現學習table型別的使用方法

create function returnviews(@type nvarchar(20))

returns table

asreturn(

select id,number,name phone,cname from dbo.userdb where [type]=@type

go /*呼叫返回table的函式*/

select * from dbo.returnviews('報關**')

sql 中 table變數的使用

sql server 2000 新增了table型資料 table型資料不能用來定義列的型別,只能用作t sql變數或者作為自定義函式的返回值。sql server 2000支援兩種型別的函式 內建函式和使用者定義函式。內建函式只允許t sql 語句呼叫而不能更改使用。使用者定義函式可以根據需要定義...

使用變數 Sql 中的變數使用

我們在學 python 或者其他程式語言的時候都應該有學過變數這麼乙個東西,可是 sql 這種查詢語言中怎麼也有變數呢?具體有什麼用呢?我們來看一下實際應用場景。現在有這麼乙個表 t 表結構如下 order id time1 time2 time3 time4 time1 表示瀏覽日期,time2 ...

Oracle中table變數在JDBC中的運用

1.先定義乙個返回陣列型別的方法 create or replace type my table type is table of varchar2 20 create or replace function func return my table type isi my table type m...