Sql server 自定义函数
来源:互联网 发布:linux常用命令教程 编辑:程序博客网 时间:2024/05/01 12:48
在Sql Server数据库中有系统内置的函数,例如我们常用的max,min,sum…,这些函数只要咱们需要,
拿过来就可以使用了,但是有时候这些函数不能满足我们的需求,需要自定义一些特殊的函数进行使用.
在数据库中函数可以定义以下四大类大类的函数:表值函数,标量值函数,聚合函数,系统函数.其中聚合
函数和系统函数是微软已经封装好的函数,我们直接拿过来就可以使用的.下面我们就来看看关于函数.
1.表值函数
标值函数是返回一个Table类型,table类型相当于一张存储在内存的一张虚拟表.对于内联表值函数,
没有函数主体;表是单个 SELECT 语句的结果集。
不带参数的表值函数的格式为:
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:唐欢-- Create date: 2013-08-16-- Description:不带参数的表值函数-- =============================================CREATE FUNCTION Functionname()RETURNS TABLE AS beginselect ,insert,update,deleteRETURN end GO查询语句:select * from dbo.Functionname()
咱们现用一个例子来看看.现在数据库中建立一个数据库表为T_BasicInfor并插入数据,用
select * fromT_BasicInfor语句查询结果为:
咱们来建立一个函数试试:
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:唐欢-- Create date: 2013-08-16-- Description:不带参数的表值函数-- =============================================ALTER FUNCTION tvpoints()RETURNS @name table (ID int identity(1,1),Name varchar(50), sex varchar(50), Idnumber varchar(50),Nation varchar(50) ,birthday dateTime)As begininsert @name values('唐欢','女','450331199306090326','汉族','19930609');insert @name values('弯弯','女','450331199101230632','瑶族','19910123') return endGO
咱们把T_BasicInfor数据库表中的前两条数据插入到虚拟的@name表中,然后用select * from dbo.tvpoints()
查询得到的结果为:
从查询的结果来看,插入的值是一样的,但是如果要往tvpoints()中再添加新的数据,就会比较麻烦,
需要修改函数.而数据表就能够很方便的往表中添加数据.而且表值函数不能用Insert , Update , delete语
句进行非查询操作,如果进行非查询操作就会提示下面的错误:不能修改对象 'dbo.tvpoints'。
带参数的表值函数和不带参数的表值函数相似,我就不一一介绍了!
2.标量函数
标量函数返回一个确定类型的标量值。其返回值类型为除TEXT、NTEXT、IMAGE、CURSOR、
TIMESTAMP和TABLE类型外的其它数据类型,函数体语句定义在BEGIN-END语句内,其中包含了可
以返回Transact-SQL命令。其实表值函数是一个特殊的标量函数,标量函数返回的值是一个具体的数
据类型而表值函数仅仅返回的是table数据类型.
变量函数的格式为:
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:唐欢-- Create date: 2013-08-16-- Description:不带参数的表值函数-- =============================================CREATE FUNCTION functionname()()RETURNS fuctiontypeASBEGINENDGO
咱们就用一个例子来解释一下关于标量函数吧:
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:唐欢-- Create date: 2013-08-16-- Description:不带参数的表值函数-- =============================================ALTER Function dbo.fn_DecryptPassword(@Ename varchar(20)) --@Ename 表示的是列名--returns varchar(20)begin set @Ename ='唐欢' --把选中的列名的值都设置为'唐欢'-- return @Enameend
使用函数的执行语句为:select * from T_BasicInfor where dbo.fn_DecryptPassword(Name ) ='唐欢'
执行结果为:
3.聚合函数
聚合函数对一组值执行计算并返回单一的值,聚合函数忽略空值,聚合函数经常与Select语句的
group by子句一同使用,所有聚合函数都具有确定性,任何时候用一组给定的输入值调用它们时,
都返回相同的值.比如系统中内置的聚合函数有sum-求和函数,COUNT-计数函数.一般情况下咱们用
的是数据库已经封装好了的聚合函数.
4.系统函数
一组内置函数,对 SQL Server 中的值、对象和设置执行操作,并返回有关它们的信息
例如时间函数,字符串转换函数,数学函数...它们都属于系统函数。
总结:
其中聚合函数属于一种特殊的系统函数,在咱们平常的使用中,系统函数就已经能够满
足需求了。不管是SQLServer 中的函数,还是程序中的函数,函数都是一段已经封装好的代码,
函数的最终目的就是返回一个值,让更少的代码干更多的事情。咱们要学会站着巨人的肩膀上,
巧妙的使用函数可以减轻客户端的压力,访问数据的代码出错可以尽量在数据库上修改,减少
编译,提高程序的灵活性,
- SQL SERVER自定义函数
- sql server 自定义函数
- SQL Server自定义函数
- SQL Server自定义函数
- SQL Server自定义函数
- SQL Server自定义函数
- SQL Server自定义函数
- sql server 自定义函数
- Sql server 自定义函数
- SQL Server自定义函数
- SQL Server自定义函数
- SQL Server自定义函数
- SQL Server自定义函数
- SQL Server 自定义函数
- SQL SERVER 自定义函数
- SQL SERVER自定义函数
- SQL Server 自定义函数
- 常用SQL Server自定义函数
- 给系统右键菜单加上cmd
- setImageResource与setImageBitmap的区别
- C语音 南阳理工ACM 113 字符串替换
- Ubuntu 11.04 安装后,基本配置
- 给系统右键菜单加上jd-gui反编译工具
- Sql server 自定义函数
- C语音 南阳理工ACM 40.公约数与公倍数
- cocos2d-X学习之主要类介绍:精灵角色(CCSprite)
- 线段树-动态查询区间最大和
- 程序员的困境
- 修改Apache的默认站点目录
- linux c编程信号处理的一些实例signal sigaction
- 队花的烦恼一 二进制
- 统计一个字符串在另一个字符串中出现的次数