页数:31页文件大小:454.4 KB来源: SQLServer2005数据库技术及应用ppt课件
本章是T-SQL编程的基础,涵盖标识符、数据类型、算术比较逻辑位运算与连接运算符及其优先级,通配符、常量与全局变量局部变量的定义,BEGIN…END、GOTO、IF…ELSE、WHILE、RETURN、WAITFOR等流程控制命令,最后介绍系统内置函数与标量函数、内嵌表值函数、多语句表值函数等用户自定义函数的创建与删除。
第13章SQL Server函数与编程结构
第13章SQL Server函数与编程结构
13.1标识符、数据类型、运算符,常量和变量
13.2流程控制命令
13.3函数13.3.1 SQL Server函数介绍13.3.2常用的几种系统内置函数13.3.3用户自定义函数
13.1标识符、数据类型、运算符、常量和变量任何一种编程语言都是由许多命令语句按一定的流程结构组合而成,而命令语句又是由一些标识符代表的常量或变量加上各种运算符构成的表达式组成的,其中常量和变量必须属于系统内置或用户自定义的某种数据类型。所以学习一门语言必须首先掌握这些基本的语法规定
标识符SQL中标识符是由用户定义的SQL Server可识别的有特殊意义的字符序列,关于标识符的使用规则第6章已讲述
数据类型
运算符
运算符的处理优先顺序
四个非常有用的通配符%:代表零个或多个字符_(下划线):代表一个字符[ ]:代表在某一范围的字符[ ^ ]:代表不在某一范围的字符
常量
变量
全局变量
局部变量
局部变量是用户可自定义的变量,它的作用范围仅在程序内部。在程序中通常用来存储从表中查询到的数据,或当作程序执行过程中暂存变量使用。局部变量必须以“@”开头,而且必须先用DECLARE命令说明后才可使用,其语法格式是: DECLARE @变量名变量类型[,@变量名变量类型]13.2流程控制命令
除了前几章已经介绍过的SELECT查询语句,可以用T-SQL语句编写比较复杂的数据库服务端程序,编写的语法格式与其他高级编程语言比较类似,一般来说程序主要就是由常量、变量、表达式、能够改变执行顺序的流程控制命令,外加一些注释、错误处理等构成。流程控制命令是程序的核心之一,决定着程序的结构功能。BEGIN…ENDBEGIN…END用来设定一个程序块,SQLServer将BEGIN…END内的所有程序视为一个单元执行,其语法格式很简单:BEGIN命令行|程序块END其中BEGIN…END可以嵌套使用GOTOGOTO命令用来改变程序执行的流程,使程序跳到有标识符的指定的程序行再继续往下执行,语法如下:GOTO标识符作为跳转目标的标识符可为数字与字符的组合,但必须以“:”结尾;在GOTO命令行标识符后不必跟“:”IF…ELSE当某一条件成立时IF…ELSE执行某一段程序,条件不成立时则执行另一段程序。语法如下:IF <条件表达式>{命令行|程序块}[ ELSE{命令行|程序块} ]其中<条件表达式>可以是各种表达式的组合,但表达式的值必须是逻辑值“真”或“假”。ELSE子句是可选的,最简单的IF语句可以没有ELSE子句部分。如果不使用程序块,IF或ELSE只能执行一条命令。IF…ELSE可以进行嵌套WHILE…CONTINUE…BREAKWHILE命令在设定的条件成立时会重复执行命令行或程序块,其语法如下:WHILE <条件表达式>BEGIN<命令行|程序块>[ BREAK ][ CONTINUE ][命令行|程序块]END其中,CONTINUE命令可以让程序跳过CONTINUE命令之后的语句,回到WHILE循环的第一行命令;BREAK命令则让程序完全跳出循环,结束WHILE命令的执行,WHILE语句也可以嵌套RETURNRETURN命令用于结束当前程序的执行,返回到上一个调用它的程序或其他程序,语法如下:RETURN [整数值]在括号内可指定一个返回值。如果没有指定返回值,SQL Server系统会根据程序执行的结果返回一个内定值,返回零值表示成功,返回非零值则表示失败WAITFORWAITFOR命令用来暂时停止程序的执行,直到等待指定时间之后或所设定的时间已到才继续往下运行程序,其语法如下:WAITFOR {DELAY<’时间’>|TIME<’时间’>}其中“时间”必须为DATETIME类型的数据,但不能包括日期。DELAY用来设定等待的时间,最多可达24小时。TIME用来设定等待结束的时间点13.3函数13.3.1 SQL Server函数介绍和其他语言类似,T-SQL提供了大量有用的函数。在数据库的日常维护和管理中,函数的使用非常频繁,正确使用函数可以帮助用户获得系统信息、进行数学运算、统计、简化数据查询,等等。在程序设计过程中,也常常需要调用系统提供的函数。T-SQL编程语言一样有系统内置函数和用户自定义函数之分,其中系统内置函数有三种类型
三种内置函数1。行集函数:行集函数是返回值为对象的函数,该对象可在T-SQL语句中作为表使用。本书对行集函数不作详细介绍,感兴趣的同学可以查看SQL联机帮助。2。统计函数:统计函数可以返回一列、几列或全部列的汇总数据,用于计算SELECT语句查询行的统计值,常用的统计函数有AVG()、SUM()、COUNT()、MAX()和MIN()等,其具体使用方法在前面章节已作过介绍。3。标量函数:标量函数指那些输入参数的类型为基本类型,返回值也为基本类型的函数,这些函数可以用在表达式中13.3.2常用的几种系统内置函数
13.3.3用户自定义函数
用户函数需要用CREATE FUNCTION语句来创建,用ALTER FUNCTION语句来修改。通过sp_helptext系统存储过程可以获取函数的源代码。自定义标量函数创建自定义函数的语法格式如下:CREATE FUNCTION [ owner_name. ] function_name([{@parameter_name [AS] scalar_parameter_data_type [=default]}[, …n]])RETURNS scalar_return_data_type[WITH {ENCRYPTION|SCHEMABINDING} [ [ , ] …n ] ][AS]BEGINfunction_bodyRETURN scalar_expressionEND调用格式调用用户自定义函数的语法格式有以下三种:
自定义内嵌表值函数创建语法格式:CREATE FUNCTION [ owner_name. ]function_name([{@parameter_name [AS] scalar_parameter_data_type [=default]}[, …n]])RETURNS TABLE[WITH {ENCRYPTION | SCHEMABINDING} [ [ , ] …n ] ][AS]RETURN [ (select-statement) ]参数说明:与标量函数相比不同的地方是:返回值类型为TABLE,表示返回一个表。用RETURN [ (select-statement) ]代替了BEGIN…END语句块,表示返回内嵌表值调用格式
相对于标量函数而言,内嵌表值函数只能通过SELECT语句调用自定义多语句表值函数创建语法格式:CREATE FUNCTION [ owner_name. ] function_name([ {@parameter_name [AS] scalar_parameter_data_type [=default]}[, …n ] ] )RETURNS @retuen_variable TABLE <table_type_defintion>[WITH {ENCRYPTION | SCHEMABINDING} [ [ , ] …n ] ][AS]BEGINfunction_bodyRETURNEND调用格式
用户定义函数的删除语法:DROP FUNCTION { [owner_name.]function_name } [ , …n ]参数说明:owner_name指函数的拥有者,本语句一次可以删除多个用户定义函数下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}