用户自定义函数:不能用于执行一系列改变数据库状态的操作,但可以像系统函数一样在查询或存储过程 等程序段中使用,也可以像存储过程一样通过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语句:无条件终止一个查询,存储过程或批处理。
SQL语言基础(7)
最新推荐文章于 2021-01-27 12:06:00 发布