/*
http://www.ASP888.Net 豆腐技術站
*/
CREATE FUNCTION
創建用戶定義函數,它是返回值的已保存的 Transact-SQL 例程。用戶定義函數不能用於執行一組修改全局數據庫狀態的
操作。與系統函數一樣,用戶定義函數可以從查詢中喚醒調用。也可以像存儲過程一樣,通過 EXECUTE 語句執行。
用戶定義函數用 ALTER FUNCTION 修改,用 DROP FUNCTION 除去。
語法 標量函數 CREATE FUNCTION [ owner_name.] function_name
( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] )
RETURNS scalar_return_data_type
[ WITH < function_option> [ [,] ...n] ]
[ AS ]
BEGIN
function_body
RETURN scalar_expression
END
內嵌表值函數 CREATE FUNCTION [ owner_name.] function_name
( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] )
RETURNS TABLE
[ WITH < function_option > [ [,] ...n ] ]
[ AS ]
RETURN [ ( ] select-stmt [ ) ]
多語句表值函數 CREATE FUNCTION [ owner_name.] function_name
( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] )
RETURNS @return_variable TABLE < table_type_definition >
[ WITH < function_option > [ [,] ...n ] ]
[ AS ]
BEGIN
function_body
RETURN
END
< function_option > ::=
{ ENCRYPTION | SCHEMABINDING }
< table_type_definition > ::=
( { column_definition | table_constraint } [ ,...n ] )
參數 owner_name
擁有該用戶定義函數的用戶 ID 的名稱。owner_name 必須是現有的用戶 ID。
function_name
用戶定義函數的名稱。函數名稱必須符合標識符的規則,對其所有者來說,該名稱在數據庫中必須是唯一的。
@parameter_name
用戶定義函數的參數。CREATE FUNCTION 語句中可以聲明一個或多個參數。函數最多可以有 1,024 個參數。函數執行時每個已聲明參數的值必須由用戶指定,除非該參數的默認值已經定義。 如果函數的參數有默認值,在調用該函數時必須指定"default"關鍵字才能獲得默認值。這種行為不同於存儲過程中有默認值的參數,在存儲過程中省略參數也意味著使用默認值。
使用 @ 符號作為第一個字符來指定參數名稱。參數名稱必須符合標識符的規則。每個函數的參數僅用於該函數本身;相同的參數名稱可以用在其它函數中。參數只能代替常量;而不能用於代替表名、列名或其它數據庫對象的名稱。
scalar_parameter_data_type
參數的數據類型。所有標量數據類型(包括 bigint 和 sql_variant)都可用作用戶定義函數的參數。不支持 timestamp數據類型和用戶定義數據類型。