SQL语言基础(7)

用户自定义函数:不能用于执行一系列改变数据库状态的操作,但可以像系统函数一样在查询或存储过程 等程序段中使用,也可以像存储过程一样通过execute命令执行。sql server2000中根据函数返回值的不同将用户定义函数分为3种类型:1 标量型函数 不能返回text、ntext、image、cursor、timestamp、table类型,函数体语句定义在begin-end语句内,其中包含了可以返回值的t-sql命令。 2 内嵌表值函数:以表的形式返回值。没有begin-end扩起来的函数体,返回的表由位于return子句中的select命令字段从数据库筛选,功能相当于一个参数化的视图。 3 多语句表值型函数,可以看成以上两种函数的结合体,返回的是一个表,但有begin-end语句括起来的函数体。 标量型自定义函数的创建:create function [owner_name] function_name (@parameter_name [as] scalar_parameter_date_type[default] [...n] ) returns scalar_return_date_type [with [...n] ] [as] BEGIN function_body RETURN scalar_expression END 参数说明:owner_name:指定自定义用户的所有者 function:函数名 database_name.owner_name.function_name应该是唯一的 @parameter_name:定义一个或多个参数名称,一个名称最多定义1024个参数,每个参数前用@符号声明。参数作用范围是整个函数,参数只能替代常量,不能替代表名,列名或其他数据库对象名称,用户自定义函数不支持输出参数。 scalar_parameter_data_type:标量型参数的数据类型。(不能用和返回值禁止使用的标量名称) scalar_return_data_type:标量型返回值的数据类型。(除text、ntext等) scalar_expression:标量型用户自定义函数返回的标量值表达式。 function_body:指定一系列t—sql语句,决定了函数的返回值。 encryption:加密选项。对function的声明加密,防止用户自定义函数作为sql server复制的一部分而被发布。 schemabinding:函数绑定到它所引用的数据库对象。函数涉及的数据库对象从此将不能被删除或修改。要绑定的数据库对象必须与函数在同一个数据库里面。 内嵌表值的用户自定义函数创建:create function [owner_name.] function_name (@parameter_name [as] scalar_parameter_date_type[default] [...n] ) returns table [with [...n] ] [as] RETURN [(] select-stmt [)] table:指定返回值为一个表 select-stmt:单个select语句,确定返回表的数据。 其他和标量型的参数相似。 多语句表值用户自定义函数:create function [owner_name.] function_name (@parameter_name [as] scalar_parameter_date_type[default] [...n] ) returns @return_variable TABLE [WITH[...n]] AS BEGIN function_body RETURN END 还可以通过企业管理器创建用户自定义函数 在创建的模板语句中把相应的项替换。 修改和删除用户自定义函数:drop function {[owner_name] function_name}[...n] 修改时基本上相当于重建一个同名函数。一般直接在函数当中进行修改。 流程控制语句 BEGIN END语句,将多个t-sql语句组成一个语句块,作为一个单元处理。相当于{},可嵌套。 IF ELSE语句:功能同程序设计语言,也可嵌套。 IF EXISTS语句:返回值不止一个为真 不要把IF EXISTS和聚合函数一起使用,因为聚合函数总是返回数据,即使数据是0。比如返回值的个数,就算为零,IF EXISTS语句也算为真,所以恒真。 WHILE语句:循环语句,continue和break,如果select用于while语句的条件,select语句必须包含在英文括号当中。 CASE表达式:CASE 字段名或变量名 WHEN 逻辑表达式1 THEN 结果表达式1 WHEN 逻辑表达式2 THEN 结果表达式2 ELSE 结果表达式 END 比如:use 工资库 update employee set e_wage= case when job_level="1" then e_wage*1.08 when job_level="2" then e_wage*1.07 when job_level="3" then e_wage*1.06 else e_wage*1.05 end RETURN语句:无条件终止一个查询,存储过程或批处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值