SQL中Table型數據與用戶自定義函數(downmoon)
SQL Server 2000 新增了Table型數據:Table型數據不能用來定義列的類型,只能用作T-SQL變量或者作為自定義函數的返回值,下例是一個簡單的table 型數據的例子:
Declare @TableVar Table
(Cola int Primary Key ,Colb char ( 3 ))
Insert Into @TableVar Values ( 1 , ' abc ' )
Insert Into @TableVar Values ( 2 , ' def ' )
Select * From @TableVar
以上語句定義了一個名為TableVar,有兩列的table 型變量像通常的表一樣table 型數據也有insert select 等操作。在SQL Server 2000 中table 型數據與用戶自定義函數是密不可分的,SQL Server 2000支持兩種類型的函數:內置函數和用戶定義函數。內置函數只允許T-SQL 語句調用而不能更改使用。用戶定義函數可以根據需要定義自己所需的函數。用戶定義函數可以帶參數,也可以不帶參數,但只能返回單值。正是由於這個原因SQL Server 2000 增加了table 型數據 ,其值可以是整型字符型或數值型。下例是一個簡單的用戶定義函數說明了用戶定義函數的基本結構:
Create Function CubicVolume
( @CubeLength decimal ( 4 , 1 ), @CubeWidth decimal ( 4 , 1 ), @CubeHeight decimal ( 4 , 1 ) )
Returns decimal ( 12 , 3 )
As
Begin
Return ( @CubeLength * @CubeWidth * @CubeHeight )
End
-- SELECT AppDta.dbo.CubicVolume (10,8,6)
在上例中用CREATE FUNCTION 創建了一個函數CubicVolume 來計算立方體的體積,變量CubeLength CubeWidth CubeHeight 為輸入參數,返回值為數值型。BEGIN 表明函數體的開始,END 表明函數體的結束。通過下例 我們就會清楚用戶定義函數與table 型數據是如何有機結合的:
Use pubs
Create Function SalesByStore( @storeid varchar ( 30 ))
Returns Table
As
Return ( Select title, qty From sales s, titles t
Where s.stor_id = @storeid and t.title_id = s.title_id)
-- select * from sales
SELECT * FROM Pubs.dbo.SalesByStore( 7131 )