--创建用户定义函数。这是一个已保存 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 <function_option> [ ,...n ] ]
    [ AS ]
    BEGIN 
                function_body 
        RETURN scalar_expression
    END
[ ; ]

创建一个简单的标量函数

用户定义函数不能用于执行修改数据库状态的操作 即不能对表进行修改.添加.删除

下列语句在函数内有效:

  • 赋值语句。
  • TRY...CATCH 语句以外的流控制语句。
  • 定义局部数据变量和局部游标的 DECLARE 语句。
  • SELECT 语句,其中的选择列表包含为局部变量分配值的表达式。
  • 游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。只允许使用以 INTO 子句向局部变量赋值的 FETCH 语句;不允许使用将数据返回到客户端的 FETCH 语句。
  • 修改 table 局部变量的 INSERT、UPDATE 和 DELETE 语句。
  • 调用扩展存储过程的 EXECUTE 语句。

用户定义函数可以嵌套

也就是说,用户定义函数可相互调用。被调用函数开始执行时,嵌套级别将增加;被调用函数执行结束后,嵌套级别将减少。用户定义函数的嵌套级别最多可达 32 级。如果超出最大嵌套级别数,整个调用函数链将失败。

CREATE FUNCTION HelloWordFunction(@Text VARCHAR(10)) 

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

--返回值的长度也要指定
RETURNS VARCHAR(10)
BEGIN
 RETURN @Text
END

调用方式

方式一 :标量函数和存储过程一样,可使用 EXECUTE 语句执行

DECLARE @ReturnValue VARCHAR(10)
EXECUTE @ReturnValue=dbo.HelloWordFunction 'HelloWrod'
PRINT @ReturnValue

结果:

方式二:直接调用

PRINT dbo.[HelloWordFunction]('Hello')

最新文章

  1. 说说 js String
  2. Head First 设计模式之命令模式(CommandPattern)
  3. bzoj3051: [wc2013]平面图
  4. [BZOJ2438]杀人游戏(缩点+特判)
  5. ios iphone6 Plus 的适配问题
  6. HDU5709 : Claris Loves Painting
  7. 模板类之间的友元关系实现Blob和BlobPtr
  8. Linux系统update-alternatives命令使用
  9. 关于Unity3D中的版本管理 .
  10. 201521123064 《Java程序设计》第14周学习总结
  11. Spring常用注解介绍【经典总结】
  12. int ,long long等范围
  13. Maven的porfile与SpringBoot的profile结合使用详解
  14. DPI技术简介
  15. Codeforces Round #481 (Div. 3)
  16. JAXB 实现java对象与xml之间互相转换
  17. ssm框架整合
  18. pom.xml中build标签
  19. 判断一个点在多边形的内部C++
  20. hdu 1254(两个BFS) 推箱子

热门文章

  1. 【BZOJ 1079】[SCOI2008]着色方案
  2. css tricks
  3. 0ffice365 Calendar API
  4. 去掉url后面的#
  5. [搜片神器]BT管理程序数据库速度调试优化问题
  6. uc/os 任务删除
  7. [转载]用.NET开发的磁力搜索引擎——Btbook.net
  8. 转Spring+Hibernate+EHcache配置(二)
  9. uva 10069
  10. N-Queens leetcode java