首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 新增使用者定義函數(UDF)語法完整參考(上)

     編輯:關於SqlServer

前言

SQL Server 2000 引入了強大的使用者定義函數(User-Defined Functions, UDF),可封裝可重複使用的 Transact-SQL 邏輯,支援標量、內嵌資料表值、多重陳述式資料表值三種類型。本文整理自官方線上叢書,供開發參考。

建立函數語法總覽

1. 標量函數

CREATE FUNCTION [owner_name.] function_name
( [ @parameter_name [AS] scalar_parameter_data_type [ = default ] ] [ ,...n ] )
RETURNS scalar_return_data_type
[ WITH  [ ,...n ] ]
[ AS ]
BEGIN
    function_body
    RETURN scalar_expression
END

2. 內嵌資料表值函數

CREATE FUNCTION [owner_name.] function_name
( [ @parameter_name [AS] scalar_parameter_data_type [ = default ] ] [ ,...n ] )
RETURNS TABLE
[ WITH  [ ,...n ] ]
[ AS ]
RETURN [ ( ] select_stmt [ ) ]

3. 多重陳述式資料表值函數

CREATE FUNCTION [owner_name.] function_name
( [ @parameter_name [AS] scalar_parameter_data_type [ = default ] ] [ ,...n ] )
RETURNS @return_variable TABLE 
[ WITH  [ ,...n ] ]
[ AS ]
BEGIN
    function_body
    RETURN
END

關鍵選項說明

  • ::= { ENCRYPTION | SCHEMABINDING }
  • ::= ( { column_definition | table_constraint } [ ,...n ] )

參數詳細說明

函數主體允許的陳述式

僅限標量函數與多重陳述式資料表值函數使用 function_body:

  • 指派陳述式
  • 控制流程陳述式(IF, WHILE 等)
  • DECLARE 定義區域變數與游標
  • 指派給區域變數的 SELECT 陳述式
  • 游標操作(FETCH ... INTO 僅限指派給區域變數)
  • 修改區域資料表變數的 INSERT, UPDATE, DELETE
  • EXECUTE 呼叫擴充預存程序

下篇預告

下一篇將詳細說明 SCHEMABINDING、確定性/非確定性函數、呼叫擴充預存程序限制、函數呼叫語法、權限 以及 完整範例(ISO 週計算、內嵌/多重陳述式資料表值函數實戰)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
參數說明
owner_name函數擁有者的使用者 ID,必須為現有使用者。
function_name函數名稱,需符合識別碼規則,在擁有者下必須唯一。
@parameter_name函數參數,最多 1,024 個。以 @ 開頭,符合識別碼規則。預設值需在呼叫時指定 DEFAULT 關鍵字(異於預存程序)。
scalar_parameter_data_type參數資料型別。支援所有標量型別(含 bigint, sql_variant),不支援 timestamp、使用者定義型別、非標量型別(cursor, table)。
scalar_return_data_type標量函數傳回型別。支援所有標量型別,除外 text, ntext, image, timestamp。
TABLE指定傳回資料表。內嵌函數由單一 SELECT 定義;多重陳述式函數使用資料表變數累積資料列。