仓酷云

标题: MSSQL编程:用户自界说函数 [打印本页]

作者: 简单生活    时间: 2015-1-16 22:19
标题: MSSQL编程:用户自界说函数
在JOIN操作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。除利用体系供应的函数外,用户还能够依据必要自界说函数。用户自界说函数(UserDefinedFunctions)是SQLServer2000新增的数据库工具,是SQLServer的一年夜改善。
用户自界说函数不克不及用于实行一系列改动数据库形态的操纵,但它能够像体系函数一样在查询或存储历程等的程序段中利用,也能够像存储历程一样经由过程EXECUTE命令来实行。用户自界说函数中存储了一个Transact-SQL例程,能够前往必定的值。
在SQLServer2000中依据函数前往值情势的分歧将用户自界说函数分为三品种型:
<P>13.13.1创立用户自界说函数
SQLServer2000为三品种型的用户自界说函数供应了分歧的命令创立格局。
(1)创立标量型用户自界说函数(Scalarfunctions)其语法以下:

MSSQL编程:用户自界说函数
登录/注册后可看大图

各参数申明以下:
(2)创立内联表值型用户自界说函数(InlineTable-valuedFunctions)
其语法以下:

MSSQL编程:用户自界说函数
登录/注册后可看大图

各参数申明以下:
(3)创立多声明表值型用户自界说函数
其语法以下:
MSSQL编程:用户自界说函数
登录/注册后可看大图

各参数申明以下:<P>
????????????????别的不断定性函数(Non-deterministicfunctions)不克不及在用户自界说函数中利用。所谓不断定性函数是指那些利用不异的挪用参数在分歧时候挪用失掉的前往值分歧的函数。这些函数如表13-3所示(全局变量也能够视为一种函数)。

MSSQL编程:用户自界说函数
登录/注册后可看大图
MSSQL编程:用户自界说函数
登录/注册后可看大图

MSSQL编程:用户自界说函数
登录/注册后可看大图


(4)用EnterpriseManager创立用户自界说函数
用EnterpriseManager创立用户自界说函数的办法是:在EnterpriseManager当选摘要创立用户自界说函数的数据库。在数据库工具“UserDefinedFunctions”上单击右键,从入手下手菜单当选择“NewUserDefinedFunction”选项,就会呈现如3-4所示的界说用户自界说函数属性对话框。能够在个中指定要界说的函数的称号,并编纂函数的剧本。单击“OK”按钮,则增加用户自界说函数工具到数据库中。
MSSQL编程:用户自界说函数
登录/注册后可看大图

3-4界说用户自界说函数属性对话框

13.13.2修正和删除用户自界说函数
在EnterpriseManager当选摘要举行修改的用户自界说函数,单击右键从快速菜单当选择“属性”选项,则会呈现与3-4相似的修正用户自界说函数布局对话框。能够修正用户自界说函数的函数体、参数等。从快速菜单当选择“删除”选项,则可删除用户自界说函数。
用ALTERFUNCTION命令也能够修正用户自界说函数。此命令的语法与CREATEFUNCTION不异,因而利用ALTERFUNCTION命令实在相称于重修了一个同名的函数,用起来不小气便。
别的,能够用DROPFUNCTION命令删除用户自界说函数,其语法以下:
DROPFUNCTION{[owner_name.]function_name}[,...n]
例13-22:删除用户自界说函数chiefinfo
dropfunctionchiefinfo

本章小结
本章次要先容了SQLServer中极其主要的两个观点:游标和视图,游标最为凸起的奉献在于实在现了对了局的行操纵,从而能够在使用程序中对统一了局集施加分歧的数据操纵,在面向汇合的数据库办理体系和面向行的程序计划二者之间架起了“相同”的桥梁,完成了两个数据处置体例的自在交换。视图作为一个查询了局集固然仍与表具有类似的布局,但它是一张虚表,以视图布局显现在用户眼前的数据并非以视图的布局存储在数据库中,而是存储在视图所援用的基础表傍边。视图的存在为保证数据库的平安性供应了老手段。除此以外,读者从本章中也能够懂得到SQLServer2000新增的“用户自界说函数”的创立和利用。2008年1月16号MySQLAB被Sun公司收购。而2009年,SUN又被Oracle收购。就这样如同一个轮回,MySQL成为了Oracle公司的另一个数据库项目。
作者: 飘灵儿    时间: 2015-1-18 17:26
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
作者: 精灵巫婆    时间: 2015-1-22 18:08
只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
作者: 透明    时间: 2015-1-31 10:34
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
作者: 仓酷云    时间: 2015-2-6 19:00
是要和操作系统进行Socket通讯的场景。否则建议慎重!
作者: 若天明    时间: 2015-2-18 08:42
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
作者: 变相怪杰    时间: 2015-3-6 02:41
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
作者: 兰色精灵    时间: 2015-3-20 02:09
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2