程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server數據庫技術(93)

SQL Server數據庫技術(93)

編輯:關於SqlServer
除了使用系統提供的函數外,用戶還可以根據需要自定義函數。用戶自定義函數(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 為三種類型的用戶自定義函數提供了不同的命令創建格式。
(1) 創建標量型用戶自定義函數(Scalar functions) 其語法如下:

SQL Server數據庫技術(93)(圖一)


各參數說明如下:

  • owner_name
    指定用戶自定義函數的所有者。
  • function_name
    指定用戶自定義函數的名稱。database_name.owner_name.function_name 應是惟一的。
  • @parameter_name
    定義一個或多個參數的名稱。一個函數最多可以定義1024 個參數每個參數前用“@”符號標明。參數的作用范圍是整個函數。參數只能替代常量,不能替代表名、列名或其它數據庫對象的名稱。用戶自定義函數不支持輸出參數。
  • scalar_parameter_data_type
    指定標量型參數的數據類型,可以為除TEXT、 NTEXT、 IMAGE、 CURSOR、TIMESTAMP 和TABLE 類型外的其它數據類型。
  • scalar_return_data_type
    指定標量型返回值的數據類型,可以為除TEXT、 NTEXT、 IMAGE、 CURSOR、TIMESTAMP 和TABLE 類型外的其它數據類型。
  • scalar_expression
    指定標量型用戶自定義函數返回的標量值表達式。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved