当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:22:00  来源:本站整理

SQL Server数据库技术(90)[MSSQL防范]

赞助商链接



  本文“SQL Server数据库技术(90)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
??除了利用系统供应的函数外,用户还可以按照需求自定义函数.用户自定义函数(User Defined Functions)是sql server 2000 新增的数据库对象,是SQL Server 的一大改良.
????用户自定义函数不能用于履行一系列改变数据库状况的操作,但它可以像系统函数一样在查询或存储历程等的程序段中利用,也可以像存储历程一样通过EXECUTE 号令来履行.用户自定义函数中存储了一个Transact-SQL 例程,可以返回一定的值.
????在SQL Server 2000 中按照函数返回值情势的差别将用户自定义函数分为三种范例:
  • 标量型函数(Scalar functions)
    标量型函数返回一个肯定范例的标量值其返回值范例为除TEXT、 NTEXT、 IMAGE、CURSOR、 TIMESTAMP 和TABLE 范例外的别的数据范例.函数体语句定义在BEGIN-END语句内,此中包含了可以返回值的Transact-SQL 号令.
  • 内联表值型函数(Inline table-valued functions)
    内联表值型函数以表的情势返回一个返回值,即它返回的是一个表内联表值型函数没有由BEGIN-END 语句括起来的函数体.其返回的表由一个位于RETURN 子句中的SELECT 号令段从数据库中挑选出来.内联表值型函数功效相当于一个参数化的视图.
  • 多声明表值型函数(Multi-statement table-valued functions)
    多声明表值型函数可以看做标量型和内联表值型函数的结合体.它的返回值是一个表,但它和标量型函数一样有一个用BEGIN-END 语句括起来的函数体,返回值的表中的数据是由函数体中的语句插入的.由此可见,它可以举行多次查询,对数据举行多次挑选
    与归并,补偿了内联表值型函数的不足.

13.13.1 成立用户自定义函数
SQL Server 2000 为三种范例的用户自定义函数供应了差别的号令成立格局.
(1) 成立标量型用户自定义函数(Scalar functions) 其语法以下:

SQL Server数据库技术(90)
各参数阐明以下:

  • owner_name
    指定用户自定义函数的全部者.
  • function_name
    指定用户自定义函数的名称.database_name.owner_name.function_name 应是惟一的.
  • @parameter_name
    定义一个或多个参数的名称.一个函数最多可以定义1024 个参数每个参数前用"@"标记标明.参数的作用范围是整个函数.参数只能替换常量,不能替换表名、列名或别的数据库对象的名称.用户自定义函数不支持输出参数.
  • scalar_parameter_data_type
    指定标量型参数的数据范例,可认为除TEXT、 NTEXT、 IMAGE、 CURSOR、TIMESTAMP 和TABLE 范例外的别的数据范例.
  • scalar_return_data_type
    指定标量型返回值的数据范例,可认为除TEXT、 NTEXT、 IMAGE、 CURSOR、TIMESTAMP 和TABLE 范例外的别的数据范例.
  • scalar_expression
    指定标量型用户自定义函数返回的标量值表达式.
  • function_body
    指定一系列的Transact-SQL 语句,它们决意了函数的返回值.
  • ENCRYPTION
    加密选项.让SQL Server 对系统表中有关CREATE FUNCTION 的声明加密,以避免用户自定义函数作为SQL Server 复制的一部份被公布(Publish) .
  • SCHEMABINDING
    筹划绑定选项将用户自定义函数绑定到它所引用的数据库对象假如指定了此选项,则函数所触及的数据库对象此后将不能被删除或改正,除非函数被删除或去掉此选项.应注意的是,要绑定的数据库对象必须与函数在同一数据库中.

    SQL Server数据库技术(90)SQL Server数据库技术(90)
(2) 成立内联表值型用户自定义函数(Inline Table-valued Functions)
其语法以下:

SQL Server数据库技术(90)
各参数阐明以下:
  • TABLE
    指定返回值为一个表.
  • select-stmt
    单个SELECT 语句,肯定返回的表的数据.
    别的参数与标量型用户自定义函数相同.

    SQL Server数据库技术(90)SQL Server数据库技术(90)

(3) 成立多声明表值型用户自定义函数
其语法以下:
SQL Server数据库技术(90)
各参数阐明以下:

  • @return_variable
    一个TABLE 范例的变量,用于存储和积累返回的表中的数据行.
  • 别的参数与标量型用户自定义函数相同.
    在多声明表值型用户自定义函数的函数体中答应利用下列Transact-SQL 语句.
  • 赋值语句(Assignment statements);
  • 流程掌握语句(Control-of-Flow statements);
  • 定义作用范围在函数内的变量和游标的DECLARE 语句;
  • SELECT 语句;
  • 编辑函数中定义的表变量的INSERT、 UPDATE 和DELETE 语句;
  • 在函数中答应触及诸如声明游标、翻开游标、关闭游标、释放游标这样的游标操作,关于读取游标而言,除非在FETCH 语句中利用INTO 从句来对某一变量赋值,不然不答应在函数中利用FETCH 语句来向客户端返回数据.
????????????????????此外不肯定性函数(Non-deterministic functions) 不能在用户自定义函数中利用.所谓不肯定性函数是指那些利用相同的调用参数在差别时刻调用得到的返回值差别的函数.这些函数如表13-3 所示(全局变量也可以视为一种函数).

SQL Server数据库技术(90)SQL Server数据库技术(90)
SQL Server数据库技术(90)

(4) 用Enterprise Manager 成立用户自定义函数
????用Enterprise Manager 成立用户自定义函数的办法是:在Enterprise Manager 中挑选要成立用户自定义函数的数据库.在数据库对象"User Defined Functions" 上单击右键,从开始菜单中挑选"New User Defined Function" 选项,就会呈现如图13-4 所示的定义用户自定义函数属性对话框.可以在此中指定要定义的函数的名称,并编辑函数的脚本.单击"OK"按钮,则增添用户自定义函数对象到数据库中.
SQL Server数据库技术(90)
图13-4 定义用户自定义函数属性对话框

13.13.2 改正和删除用户自定义函数
????在Enterprise Manager 中挑选要举行窜改的用户自定义函数,单击右键从快速菜单中挑选"属性"选项,则会呈现与图13-4 近似的改正用户自定义函数构造对话框.可以改正用户自定义函数的函数体、参数等.从快速菜单中挑选"删除"选项,则可删除用户自定义函数.
????用ALTER FUNCTION 号令也可以改正用户自定义函数.此号令的语法与CREATEFUNCTION 相同,因此利用ALTER FUNCTION 号令其实相当于重建了一个同名的函数,用起来不大便利.
????别的,可以用DROP FUNCTION 号令删除用户自定义函数,其语法以下:
????DROP FUNCTION { [ owner_name. ] function_name } [ ,...n ]
例13-22: 删除用户自定义函数chiefinfo
drop function chiefinfo

本章小结
????本章主要介绍了SQL Server 中极其重要的两个概念:游标和视图,游标最为突出的奉献在于其实现了对后果的行操作,从而可以在利用程序中对同一后果集施加差别的数据操作,在面向调集的数据库管理系统和面向行的程序计划二者之间架起了"沟通"的桥梁,实现了两个数据处理方法的安闲交流.视图作为一个查询后果集固然仍与表具有类似的构造,但它是一张虚表,以视图构造显示在用户眼前的数据并非以视图的构造存储在数据库中,而是存储在视图所引用的基本表当中.视图的存在为保障数据库的安全性供应了新手段.除此之外,读者从本章中也可以理解到SQL Server 2000 新增的"用户自定义函数"的成立和利用
  以上是“SQL Server数据库技术(90)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • sqlserver索引的原理及索引成立的注意事项小结
  • SQL Join的一些总结(实例)
  • SQL的Join利用图解教程
  • SQL中JOIN和UNION辨别、用法及示例介绍
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .