当前位置:  数据库>sqlserver

学习 SQL Server 的三种自定义函数

    来源: 互联网  发布时间:2014-08-29

    本文导语:  自定义函数分为:标量值函数或表值函数 如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数。可以使用多条 Transact-SQL 语句定义标量值函数。 如果 RETURNS 子句指定 TABLE,则函数为表值函数。 表值函数分为:内嵌表...

自定义函数分为:标量值函数或表值函数

如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数。可以使用多条 Transact-SQL 语句定义标量值函数。
如果 RETURNS 子句指定 TABLE,则函数为表值函数。

表值函数分为:内嵌表值函数(行内函数)或多语句函数

如果 RETURNS 子句指定的 TABLE 不附带列的列表,则该函数为内嵌表值函数。
如果 RETURNS 子句指定的 TABLE 类型带有列及其数据类型,则该函数是多语句表值函数。

1,标量值函数例子:

代码示例:
CREATE FUNCTION dbo.Foo()
RETURNS int
AS 
BEGIN
    declare @n int
    select @n=3
    return @n
END

2,内嵌表值函数的例子
 

代码示例:
CREATE FUNCTION dbo.Foo()
RETURNS TABLE
AS 
    return select id, title from msgs

在sql server数据库中,内嵌表值函数只有一个 select 语句。

3,多语句表值函数的例子(部分)
 

代码示例:
CREATE FUNCTION fn_FindReports (@InEmpId nchar(5))
RETURNS @retFindReports TABLE (empid nchar(5) primary key,
   empname nvarchar(50) NOT NULL,
   mgrid nchar(5),
   title nvarchar(30))
...

注意其 RETURNS 部分。

多语句函数的主体中允许使用以下语句。未在下面的列表中列出的语句不能用在函数主体中。

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


    
 
 

您可能感兴趣的文章:

  • 用什么学习函数库?
  • 学习C#中的静态构造函数与复制构造函数
  • php构造函数和析构函数学习
  • C#学习笔记之抽象类和抽象函数
  • T-SQL常用游标函数实例学习
  • SQL学习笔记七函数 数字,日期,类型转换,空值处理,case
  • 学习C#静态函数及变量的一个精典例子与代码
  • c# Base64编码函数学习笔记
  • SQL学习笔记四 聚合函数、排序方法
  • ORACLE学习笔记-添加更新数据函数篇
  • C#学习笔记之派生类的构造函数
  • C#类的学习笔记之C#构造函数
  • C# 泛型类与泛型函数的实例学习
  • jQuery的animate函数学习记录
  • php取整函数用法实例学习
  • Java反射学习 getClass()函数应用
  • oracle 合并查询 事务 sql函数小知识学习
  • jQuery学习笔记之jQuery构建函数的7种方法
  • php 字符串替换函数学习
  • sql server 2005 窗口函数(OVER)学习笔记
  • Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)
  • CSS学习笔记Padding 属性中参数的定义与使用
  • C#学习笔记之用户定义类(或结构)的类型转换
  • C#学习笔记之定义类的属性
  • JAVA/JSP学习系列之七(Orion下自定义Tag)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 想学习linux环境下的IM server/client 开发,请有经验的朋友指点一下!
  • MS SQL Server游标(CURSOR)的学习使用
  • sun的j2ee server是不是只是用来学习的,不用于商业用途啊?
  • JAVA/JSP学习系列之四(Orion App Server的安装)
  • SQL Server存储过程入门学习
  • sql server触发器学习总结及自动编号的例子
  • 操作系统 iis7站长之家
  • 学习 sql server 2005 公用表表达式(CTE)
  • 学习 SQL Server 2005游标
  • SQL Server数据库入门学习总结
  • 学习Sql Server触发器的使用
  • SQL Server触发器及触发器中的事务学习
  • PHP介绍及学习网站推荐
  • 想深入学习Java应该学习哪些东西
  • 准备学习docker: docker version命令查看版本
  • 新手提问:学习c++同时也想学习unix和linux
  • HTML 学习总结及下一步学习教程推荐
  • 学习c后,学习pb,大家提点建议,谢谢哦
  • OpenStack相关学习资料搜集
  • 有最近开始学习Minix的吗?一起来学习吧
  • juqery的python实现:pyquery学习使用教程
  • 我想问问哪里有AIX下啊!~版本越新越好!~我想拿来学习学习
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 学习java好 还是学习嵌入式开发好??
  • 学习linux网络编程需要学习些内核知识吗?
  • 我想学习linux桌面编程,那么有没有必要学习linux的内核以及内核的相关编程呢?
  • 从Delphi开始学习Java,如何学习Java.欢迎大家的光临!
  • 请问学习JAVABEANS是不是就是学习java.beans.*类库??
  • 谁有 电子版 mastering ejb 2e 多谢!!及学习EJB 集合什么实例学习比较快一点?
  • 我想学习Unix,请高手给个下载网址,用linux来学习Unix差别大吗?
  • 你们学习Linux是学习什么的?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3