除了使用系統提供的函數外,用戶還可以根據需要自定義函數。用戶自定義函數(User Defined Functions)是SQL Server 2000 新增的數據庫對象,是SQL Server 的一大改進。
用戶自定義函數不能用於執行一系列改變數據庫狀態的操作,但它可以像系統函數一樣在查詢或存儲過程等的程序段中使用,也可以像存儲過程一樣通過EXECUTE 命令來執行。用戶自定義函數中存儲了一個Transact-SQL 例程,可以返回一定的值。
在SQL Server 2000 中根據函數返回值形式的不同將用戶自定義函數分為三種類型: 標量型函數(Scalar functions)
標量型函數返回一個確定類型的標量值其返回值類型為除TEXT、 NTEXT、 IMAGE、CURSOR、 TIMESTAMP 和TABLE 類型外的其它數據類型。函數體語句定義在BEGIN-END語句內,其中包含了可以返回值的Transact-SQL 命令。 內聯表值型函數(Inline table-valued functions)
內聯表值型函數以表的形式返回一個返回值,即它返回的是一個表內聯表值型函數沒有由BEGIN-END 語句括起來的函數體。其返回的表由一個位於RETURN 子句中的SELECT 命令段從數據庫中篩選出來。內聯表值型函數功能相當於一個參數化的視圖。 多聲明表值型函數(Multi-statement table-valued functions)
多聲明表值型函數可以看作標量型和內聯表值型函數的結合體。它的返回值是一個表,但它和標量型函數一樣有一個用BEGIN-END 語句括起來的函數體,返回值的表中的數據是由函數體中的語句插入的。由此可見,它可以進行多次查詢,對數據進行多次篩選
與合並,彌補了內聯表值型函數的不足。
13.13.1 創建用戶自定義函數
SQL Server 2000 為三種類型的用戶自定義函數提供了不同的命令創建格式。