zxg588 发表于 2015-7-4 08:07:15

SQL SERVER 中的自定义函数(一) 标量值函数

  --------------------自定义函数--------------
--创建用户定义函数。这是一个已保存 Transact-SQL 或公共语言运行时 (CLR) 例程,
--该例程可返回一个值。用户定义函数不能用于执行修改数据库状态的操作。
--与系统函数一样,用户定义函数可从查询中调用。标量函数和存储过程一样,可使用 EXECUTE 语句执行。
  标量函数的语法格式
  CREATE FUNCTION [ schema_name. ] function_name
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type
    [ = default ] }
    [ ,...n ]
]
)
RETURNS return_data_type
    [ WITH[ ,...n ] ]
    [ AS ]
    BEGIN
                function_body
      RETURN scalar_expression
    END
[ ; ]
  创建一个简单的标量函数
  用户定义函数不能用于执行修改数据库状态的操作 即不能对表进行修改.添加.删除
下列语句在函数内有效:

[*]赋值语句。
[*]TRY...CATCH 语句以外的流控制语句。
[*]定义局部数据变量和局部游标的 DECLARE 语句。
[*]SELECT 语句,其中的选择列表包含为局部变量分配值的表达式。
[*]游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。只允许使用以 INTO 子句向局部变量赋值的 FETCH 语句;不允许使用将数据返回到客户端的 FETCH 语句。
[*]修改 table 局部变量的 INSERT、UPDATE 和 DELETE 语句。
[*]调用扩展存储过程的 EXECUTE 语句。
  用户定义函数可以嵌套
  也就是说,用户定义函数可相互调用。被调用函数开始执行时,嵌套级别将增加;被调用函数执行结束后,嵌套级别将减少。用户定义函数的嵌套级别最多可达 32 级。如果超出最大嵌套级别数,整个调用函数链将失败。
  

Code
CREATE FUNCTION HelloWordFunction(@Text VARCHAR(10))

--参数的类型和长度必须指定大小如果不指定会出现值的长度丢失

--返回值的长度也要指定
RETURNS VARCHAR(10)
BEGIN
RETURN @Text
END
  
  调用方式
  方式一 :标量函数和存储过程一样,可使用 EXECUTE 语句执行

Code
DECLARE @ReturnValue VARCHAR(10)
EXECUTE @ReturnValue=dbo.HelloWordFunction 'HelloWrod'
PRINT @ReturnValue  结果:

  方式二:直接调用
  

Code
PRINT dbo.('Hello')
  
页: [1]
查看完整版本: SQL SERVER 中的自定义函数(一) 标量值函数