程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL中Table型數據與用戶自定義函數

SQL中Table型數據與用戶自定義函數

編輯:關於SqlServer
 

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 )

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved