数据库系统原理及应用-语法与流程控制.ppt_第1页
数据库系统原理及应用-语法与流程控制.ppt_第2页
数据库系统原理及应用-语法与流程控制.ppt_第3页
数据库系统原理及应用-语法与流程控制.ppt_第4页
数据库系统原理及应用-语法与流程控制.ppt_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库系统原理与应用,SQLServer2000编程语法与流程控制,教学目标,Transact-SQL语言是微软公司在关系型数据库管理系统Microsoft SQL Server中的实现。通过使用各种Transact-SQL语句,可以完成SQL Server数据库中的各种操作。,Transact-SQL语言的特点,Transact-SQL语言是微软对SQL语言的扩展。 Transact-SQL语言是一种交互式查询语言,具有功能强大、简单易学的特点。 Transact-SQL语言有4个特点: 一是一体化的特点,集数据定义语言、数据操纵语言、数据控制语言和附加语言元素为一体。 二是两种使用方式,交互式和嵌入到高级语言的使用方式。前者适合于非数据库专业人员使用,后者适合于数据库专业开发人员使用。 三是非过程化语言,只需要提出“干什么”,不需要指出“如何干”,语句的操作过程由系统自动完成。 四是,类似于人的思维习惯,容易理解和掌握。,Transact-SQL语言的组成元素,数据控制语言语句 数据定义语言语句 数据操纵语言语句 附加的语言元素,数据控制语言语句,安全性管理是分布式数据库系统的重要特征。安全性管理就是确保数据库中的数据和操作不能被未授权的用户使用和执行。 数据控制语言语句就是用来进行安全性管理,它可以确定哪些用户可以查看或修改数据、或执行数据库中的操作等,这些语句主要包括GRANT、DENY、REVOKE等语句。,数据定义语言语句,数据定义语言语句用来执行数据库的任务、创建数据库以及数据库中的各种对象,这些语句包括CREATE、ALTER、DROP等语句。在Microsoft SQL Server 2000系统中,数据库及其对象包括数据库、表、缺省、规则、视图、触发器、存储过程等。 这些对象的创建、修改和删除等管理都可以通过使用CREATE、ALTER、DROP等语句来完成。,数据操纵语言语句,数据操纵语言语句,用来在数据库中操纵各种对象,检索和修改数据,这些语句包括SELECT、INSERT、UPDATE、DELETE等。SELECT语句是检索语句,可以从表中检索数据。INSERT语句是插入数据语句,可以把数据插入到表中。UPDATE语句是修改数据语句,可以对表中的数据进行修改。DELETE语句是删除数据语句,可以把表中的数据删除。这些语句都是操纵数据库的最常用到的语句。,附加的语言元素,附加的语言元素不是ISO SQL-3的标准内容,而是Transact-SQL语言为了编程而增加的语言元素。这些语言元素包括变量、运算符、函数、流程控制语言和注释等等。 下面就要介绍这些Transact-SQL语法的要素,批处理命令,批处理是多条Transact-SQL语句构成的集合。SQL Server将批处理语句进行编译形成一个可执行单元,称为执行计划。执行计划中的语句每次执行一条语句,如果在编译过程中出现语法错误,那么批处理中所有的语句均无法正常执行。如果在运行阶段出现错误时,一般都会中断当前以及其后语句的执行,只有在少数情况下,如违反约束时,仅中断当前出错的语句而继续执行其他语句。,在建立批处理时,应该遵循以下规则: l 不能在批处理中引用其他批处理中所定义的变量。 l CREATE DEFAULT、CREATE PROCEDURE、CREATE RULE、CREATE TRIGGER 和 CREATE VIEW 语句不能在批处理中与其它语句组合使用。 l 不允许在一个批处理中更改表结构、并引用新的字段。 l 如果 EXECUTE 语句是批处理中的第一句,则不需要 EXECUTE 关键字。如果 EXECUTE 语句不是批处理中的第一条语句,则需要 EXECUTE 关键字。 l 一个完整的批处理需要使用GO语句作为结束标记。,GO 向 SQL Server 描述由 Transact-SQL 语句组成的批处理 实际上并不是 Transact-SQL 语句 EXECUTE /EXEC 用于执行用户定义的函数、系统存储过程、用户自定义存储过程或一个扩展的存储过程 在一个 Transact-SQL 批处理内部,EXEC 能控制一个字符串的运行,注释,注释是程序代码中不执行的文本字符串。在SQL Server中,可以使用两种类型的注释字符: 一种是ANSI标准的注释符“-”,它用于单行注释; 另一种是与C语言相同的注释符号,即“/* */”。,注释语句,嵌于行内的注释语句 块注释语句,SELECT productname , (unitsinstock - unitsonorder) - 计算存货 , supplierID FROM products GO,/* 这部分代码检索产品表的所有行并且显示单价,增加了10%的单价和产品名称。 */ USE northwind SELECT unitprice, (unitprice * 1.1), productname FROM products GO,示例 2,示例 1,标识符,标准标识符 第一个字符必须是字母,az 或 AZ 第一个字符后可以是数字、字母或各种符号 当标识符的第一个字符是符号时,代表它有特殊用处 1. 以开头的标识符代表局部变量或参数 2. 以#开头的标识符代表临时表或存储过程 3. 以#开头的标识符代表一个全局临时对象,标识符(续),限定标识符 当对象名称包含空格时 当保留关键字被用作对象名或对象部分的名字时 可以 用中括号表示的括号标识符( ) 用双引号表示的引用标识符(“ ”),SELECT * FROM 含空格的表名,SELECT * FROM “含空格的表名”,标识符的命名原则,使用短的名字 尽量使用有意义的名字 使用简单明了的命名约定 使用能够区分出对象类型的标识符 视图 存储过程 保持对象名和用户名的一致性 sales 表和 sales 角色,数据类型,数字型 代表数字,包括各种整数如 int、tinyint、smallint 和 bigint 日期型 代表日期和日期范围,包括 datetime 和 smalldatetime 字符型 用于表示字符数据或字符串,包括 char、nchar、varchar 和 nvarchar 二进制型 在存储与结构上与字符型数据相似,包括 binary 和varbinary,常量,常量 常量,也称为字面值或标量值,是表示一个特定数据值的符号,在运行过程中其值不会变的量。常量的格式取决于它所表示的值的数据类型。包括:字符型常量,整型常量, 实型常量,日期常量等。 Example: This is 12 12.3 2002-09-09,变量,变量对于一种语言来说是必不可少的组成部分。 变量有两种形式,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。 可以使用DECLARE语句定义一个局部变量,并且指定变量的数据类型。 系统本身还提供了一些全局变量。引用全局变量时,名字前要有两个标记符“”。,变量,用 DECLARE 语句定义局部变量 用 SET 或 SELECT 语句给局部变量赋值 局部变量只具有局部作用范围 只能在定义它的语句、批处理或过程中使用,【例】创建局部变量var1、var2,并赋值,然后输出变量的值。 DECLARE var1 varchar(20),var2 varchar(40) SET var1=中国 /*一个SET语句只能给一个变量赋值*/ SET var2=var1+是一个伟大的国家 select var1,var2 go,【例】创建一个名为sex的局部变量,并在 SELECT 语句中使用该局部变量查找表student中所有女同学的学号、姓名。 DECLARE sex char(2) SET sex=女 SELECT SNO,SNAME FROM student WHERE SSEX=sex GO,【例】使用查询给变量赋值。 DECLARE student char(8) SET student=(SELECT SNAME FROM student WHERE SNO=200215121) SELECT student GO 用SELECT语句赋值 语法格式: SELECT local_variable=expression ,n,变量(续),全局变量 用两个 标识,由 SQL Server 提供,用户不能创建全局变量 设置变量 提供 SQL Server 当前各种特性和参数的设置信息 统计变量 提供 SQL Server 自启动后的运行信息 系统变量 提供最近对表操作的信息,一些常用的全局变量: (1)CONNECTIONS 返回自上次启动SQL Server以来连接或试图连 接的次数。 (2)MAX_CONNECTIONS 返回SQL Server上允许的同时用户连接的最大 数。 (3)ERROR 返回最后执行的 T-SQL 语句的错误代码。,(4) TRANCOUNT 返回当前连接的活动事务数。 (5) VERSION 返回 SQL Server 当前安装的日期、版本和处理器类型。 (6) SERVERNAME 返回运行 SQL Server 的本地服务器名称。 (7) SERVICENAME 返回 SQL Server 正在其下运行的注册表键名。若当前实例为默认实例,则 SERVICENAME 返回MSSQLServer;若当前实例是命名实例,则该函数返回实例名。,(8) SPID 返回当前用户进程的服务器进程标识符 (ID)。 (9) ROWCOUNT 返回受上一语句影响的行数。 (10) NESTLEVEL 返回当前存储过程执行的嵌套层次(初始值为0)。 (11) LANGUAGE 返回当前使用的语言名。 (12) OPTIONS 返回当前 SET 选项的信息。,(13) CPU_BUSY 返回自上次启动 SQL Server 以来 CPU 的工作时间,单位为毫秒(基于系统计时器的分辨率)。 (14) IDLE 返回 SQL Server 自上次启动后闲置的时间,单位为毫秒(基于系统计时器的分辨率)。 (15) IDENTITY 返回最后插入的标识值。 INSERT INTO jobs (job_desc,min_lvl,max_lvl) VALUES (Accountant,12,125) SELECT IDENTITY AS Identity,使用全局变量时应该注意以下几点:,全局变量不是由用户的程序定义的,它们是在服务器级定义的。 用户只能使用预先定义的全局变量。 引用全局变量时,必须以“”开头。 局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。,函数,在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令。Transact-SQL 编程语言提供了三种函数: 行集函数:行集函数可以在Transact-SQL语句中当作表引用。 聚合函数:聚合函数用于对一组值执行计算并返回一个单一的值。 标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。,系统函数,聚集函数 标量函数 行集函数,SELECT * FROM OPENQUERY (OracleSvr, SELECT name, id FROM owner.titles),USE northwind SELECT AVG (unitprice) AS AvgPrice FROM products GO,USE northwind SELECT DB_NAME() AS database GO,SQL Server中最常用的几种函数,字符串函数 日期和时间函数 数学函数 转换函数 系统函数 聚合函数 用户自定义函数,1 字符串函数,字符串函数可以对二进制数据、字符串和表达式执行不同的运算,大多数字符串函数只能用于char和varchar数据类型以及明确转换成char和varchar的数据类型,少数几个字符串函数也可以用于binary和varbinary数据类型。此外,某些字符串函数还能够处理text、ntext、image数据类型的数据。,字符串函数的分类:,基本字符串函数:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。 字符串查找函数:CHARINDEX、PATINDEX。 长度和分析函数:DATALENGTH、 RIGHT 、SUBSTRING。 转换函数:ASCH、CHAR、STR、SOUNDEX 、 DIFFERENCE。,1.Upper功能:返回将小写字符数据转换为大写的字符表达式。 语法: UPPER(character_expression)其中, character_expression 由字符数据组成的表达式。 character_expression 可以是常量、变量,也可以 是字符或二进制数据的列,它的返回类型为varchar。 2.Lower功能:将大写字符数据转换为小写的字符表达式。 语法:LOWER(character_expression)其中, character_expression是字符或二进制数据表达式。 character_expression 可以是常量、变量或列。,Upper()和Lower()函数举例,USE pubs GO SELECT lower(SubString(title,1,20) AS 书名小写, upper(Substring(title, 1, 20) AS 书名大写, LOWER(UPPER(SUBSTRING(title, 1, 20) As LowerUpper FROM titles WHERE price between 11.00 and 20.00,3.Space功能:返回由重复的空格组成的字符串。 语法 :SPACE (integer_expression ) integer_expression是表示空格个数的正整数。如果 integer_expression 为负,则返回空字符串。 USE pubs GO SELECT RTRIM(au_lname) + , + SPACE(5) + LTRIM(au_fname) FROM authors ORDER BY au_lname, au_fname GO,4.Ltrim()功能:删除起始空格后返回字符表达式。 语法 :LTrim(character_expression ) character_expression是字符或二进制数据表达式。 举例: DECLARE string_to_trim varchar(60) SET string_to_trim = 前面有五个空格 SELECT 现在没有空格: + LTRIM(string_to_trim) GO,5.RTrim功能:截断所有尾随空格后返回一个字符串。 语法 :RTrim (character_expression ) character_expression是字符或二进制数据表达式。 举例: DECLARE string_to_trim varchar(60) SET string_to_trim = 后面有四个空格 SELECT 现在没有空格: + CHAR(13) + RTRIM(string_to_trim) GO,6. STUFF功能:删除指定长度的字符并在指定的起始点插入另一组字符。 语法 :STUFF ( character_expression , start , length , character_expression ) character_expression 由字符数据组成的表达式 Start 是一个整型值,指定删除和插入的开始位置。 Length 是一个整数,指定要删除的字符数。 SELECT STUFF(abcdef, 2, 3, ijklmn) GO,7.REVERSE功能:返回字符表达式的反转。 语法 :REVERSE ( character_expression ) 举例: select Reverse(abcd),8.DATALENGTH功能:返回任何表达式所占字节数。 语法 :DATALENGTH(expression) expression是任何类型的表达式 。 举例: USE pubs GO SELECT length = DATALENGTH(pub_name), pub_name FROM publishers ORDER BY pub_name GO select datalength(abcd ),9.SubString功能:返回字符、binary、text 或 image 表达式的一部分。 语法 :SUBSTRING ( expression , start , length ) expression是字符串、二进制字符串、text、image列或包含列的表达式。不要使用包含聚合函数的表达式。 Start 是一个整数,指定子串的开始位置。 Length 是一个整数,指定子串的长度(要返回 的字符数或字节数)。,举例: (1)在字符串上使用 SUBSTRING USE pubs SELECT au_lname, SUBSTRING(au_fname, 1, 1) FROM authors ORDER BY au_lname (2)在text、ntext和image数据上使用SUBSTRING USE pubs SELECT pub_id, SUBSTRING(logo, 1, 10) AS logo, SUBSTRING(pr_info, 1, 10) AS pr_info FROM pub_info WHERE pub_id = 1756 SELECT SUBSTRING(abcdefgh, 1, 5),10.STR功能:由数字数据转换来的字符数据。 语法:STR(float_expression,length,decimal) 参数 float_expression 是带小数点的近似数字 (float) 数据类型的表达式。不要在 STR 函数中将函数 或子查询用作 float_expression。 Length 是总长度,包括小数点、符号、数字或 空格。默认值为 10。 Decimal 是小数点右边的位数。,举例: (1). SELECT STR(123.45, 6, 1) (2). SELECT STR(123.45, 2, 2) 注意:当表达式超出指定长度时返回*,11. LEFT功能: 返回从字符串左边开始指定个数的字符 。 语法 :LEFT ( charexpression ,intexpression ) 。 Charexpression字符或二进制数据表达式, 可以 是常量、变量或列。 intexpression是正整数,如果为负,则返回空字 符串。,举例: (1) select left(abc123,5) (2) USE pubs GO SELECT LEFT(title, 5) FROM titles ORDER BY title_id GO,2 日期和时间函数,日期和时间函数用于对日期和时间数据进行各种不同的处理和运算,并返回一个字符串、数字值或日期和时间值。在SQL Server2000中,日期和时间函数的类型如表所示。,表日期和时间函数的类型,日期部分 缩写 year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww Hour hh minute mi, n second ss, s,1. GetDate()功能:返回当前系统日期和时间 。 语法 :GETDATE ( ) 举例: select GetDate() as 当前日期和时间 2. Day()功能:返回代表指定日期的天的日期部分的整数 。 语法 :DAY ( date ) 举例: select day(GetDate() as 当前日 select day(2004/09/28) 注意:常量字符串加 ,3. Month()功能:返回代表指定日期月份的整数 。 语法 : Month( date ) 举例: select Month(GetDate() as 当前月 select Month(2004/09/28) 注意:常量字符串加 4. Year()功能:返回代表指定日期年份的整数 。 语法 : Year( date ) 举例: select Year(GetDate() as 当前年份 select Year(2004/09/28),3 数学函数,数学函数用于对数字表达式进行数学运算并返回运算结果。数学函数可以对SQL Server提供的数字数据(decimal、integer、float、real、money、smallmoney、smallint 和 tinyint)进行处理。,1.Floor()功能:返回小于或等于所给数字表达式的最大整数 。 语法 : FLOOR (numeric_expression) 举例: SELECT FLOOR(123.45), FLOOR(-123.45), FLOOR($123.45) 2. Round()功能:返回数字表达式并四舍五入为指定的长度或精度 。 语法:ROUND(numeric_expression,length,function ) 举例: SELECT ROUND(123.9994, 3), ROUND(123.9995, 3),3.power()功能:返回给定表达式乘指定次方的值。 语法 : POWER ( numeric_expression , y ) 举例: select power(3,2) 2. rand()功能:返回 0 到1 之间的随机float 值。 语法 : rand (seed) 举例: select rand( ) ,4 转换函数,一般情况下,SQL Server会自动处理某些数据类型的转换。例如,如果比较 char 和 datetime 表达式、smallint 和 int 表达式、或不同长度的 char 表达式,SQL Server 可以将它们自动转换,这种转换被称为隐性转换。但是,无法由SQL Server自动转换的或者是SQL Server自动转换的结果不符合预期结果的,就需要使用转换函数做显示转换。 转换函数有两个:CONVERT和CAST。,CONVERT和CAST函数,将某种数据类型的表达式显式转换为另一种数据类型。CAST和CONVERT提供相似的功能。 语法 使用 CAST: CAST(expression AS data_type) 使用 CONVERT: CONVERT(data_type(length),expression),举例,USE pubs SELECT title, ytd_sales FROM titles WHERE CAST(ytd_sales AS char(20) LIKE 15% AND type = trad_cook USE pubs GO SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales FROM titles WHERE CONVERT(char(20), ytd_sales) LIKE 3% GO,5 聚合函数,主要包括AVG,COUNT,MAX,MIN,SUM等。 聚合函数对一组值执行计算并返回单一的值。除COUNT函数之外,聚合函数忽略空值。 聚合函数经常与SELECT语句的GROUP BY子句一同使用。,举例,USE pubs GO - Aggregate functions SELECT type, SUM(price), SUM(advance) FROM titles WHERE type LIKE %cook GROUP BY type ORDER BY type GO,6 用户自定义函数,在sql server中创建函数来扩充和扩展系统支持的内置函数。用户自定义函数的可带参数,也可不带,但数据类型不能是时间戳(timestamp)、游标(cursor)和表(table)。 1.函数定义 利用create function语句创建函数。 2.函数调用 函数调用形式: 所有者名.函数名(实参1,实参n) 3.用户函数的删除 利用drop function语句进行函数的删除。,运算符,表达式,各种符号和运算符的组合 对单个数据进行操作 表达式结果的数据类型由表达式中的成员决定,USE northwind SELECT OrderID, ProductID ,(UnitPrice * Quantity) as ExtendedAmount FROM Order Details WHERE (UnitPrice * Quantity) 10000 GO,示例,流控制的语言元素,语句级 BEGIN END 块 IF ELSE 块 WHILE 块 行级 CASE 语句,DECLARE n tinyint SET n = 5 IF (n BETWEEN 4 and 6) BEGIN WHILE (n 0) BEGIN SELECT n AS Number ,CASE WHEN (n % 2) = 1 THEN EVEN ELSE ODD END AS Type SET n = n - 1 END END ELSE PRINT NO ANALYSIS GO,示例,流控制的语言元素(续),CASE 的派生函数 COALESCE 返回表达式列表中第一个非 NULL 表达式 NULLIF 如果两个表达式相等返回 NULL,否则返回第一个表达式 ISNULL 如果第一个表达式为非 NULL,返回第一个表达式,否则返回第二个表达式,COALECSE(表达式1,表达式2,表达式n),NULLIF(表达式1,表达式2),ISNULL(表达式1,表达式2),保留的关键字,有特定含义的标识符名 Transact-SQL 关键字 ANSI SQL-92 关键字 ODBC 保留关键字 不要使用保留关键字作为标识符名,流程控制语句,流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQL Server 2000中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。,IFELSE语句,IFELSE语句是条件判断语句,其中,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。IFELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。SQL Server允许嵌套使用IFELSE语句,而且嵌套层数没有限制。,IFELSE语句的语法形式,IF Boolean_expression sql_statement | statement_block ELSE sql_statement | statement_block ,例:下面的示例显示带有语句块的 IF 条件。如果书的平均价格不低于 $15,那么就显示文本:平均价格超过$15. USE pubs GO IF (SELECT AVG(price) FROM titles WHERE type = mod_cook) $15 BEGIN PRINT 以下是现代烹调类的书籍 : PRINT SELECT SUBSTRING(title, 1, 35) AS Title FROM titles WHERE type = mod_cook END ELSE PRINT 平均价格超过$15.,8.3.1 IFELSE语句,在实际程序中,IFELSE语句中不止包含一条语句,而是一组的SQL语句。为了可以一次执行一组SQL语句,这时就需要使用BEGINEND语句将多条语句封闭起来。其语法格式为:,BEGINEND语句,BEGINEND语句能够将多个Transact-SQL语 句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用BEGINEND语句,其语法形式为: BEGIN sql_statement | statement_block END,CASE函数,CASE函数可以计算多个条件式,并将其中一个符合条件的结果表达式返回。CASE函数按照使用形式的不同,可以分为简单CASE函数和搜索CASE函数。,CASE input_expression WHEN when_expression THEN result_expression .n ELSE else_result_expression END,简单 CASE 函数:,【例】根据系统时间判断当前日期所对应的星期值并且输出结果。 在查询分析器中运行如下命令: DECLARE dt DATETIME SET dt = DATEPART(w,GETDATE() SELECT CASE dt WHEN 1 THEN 星期天 WHEN 2 THEN 星期一 WHEN 3 THEN 星期二 WHEN 4 THEN 星期三 WHEN 5 THEN 星期四 WHEN 6 THEN 星期五 WHEN 7 THEN 星期六 END 该实例中,首先通过DATEPART函数获得当前时间所对应的星期数,范围为1至7,其中1代表星期天,7代表星期六,构造一个条件分支。然后将系统的星期数值通过CASE函数转换为相应的字符串信息并显示结果。,例:显示各读者可借书的数量。 USE Library GO SELECT Rname,rt.Typename AS 类型,限借阅量= CASE r.TypeID WHEN 3 THEN 可以借x本书! WHEN 2 THEN 可以借y本书! WHEN 1 THEN 可以借z本书! ELSE 无规定 END FROM Reader r,ReaderType rt WHERE r.TypeID=rt.TypeID GO,CASE 搜索函数:,CASE WHEN Boolean_expression THEN result_expression .n ELSE else_result_expression,【例】取得系统时间,并且判断当前时间在一天中所处的时间段,并且在查询分析器中输出提示信息。 在查询分析器中运行如下命令: DECLARE sj DATETIME SET sj = DATEPART(hh,GETDATE() SELECT CASE WHEN sj=20 and sj=14 and sj=12 and sj=10 and sj=0 and sj10 THEN 临晨 END,本例中首先通过DATEPART函数取得当前时间中的小时数,并保存在sj变量中,然后构造CASE函数,用于确定不同的条件分支。将变量sj分别与CASE函数中的条件依次进行比较,直到满足条件时输出结果。,例:USE Library GO SELECT Rname,rt.Typename AS 类型,限借阅量= CASE WHEN r.TypeID =3 THEN 可以借x本书! WHEN r.TypeID =2 THEN 可以借y本书! WHEN r.TypeID =1 THEN 可以借z本书! ELSE 无规定 END FROM Reader r,ReaderType rt WHERE r.TypeID=rt.TypeID GO,WHILECONTINUEBREAK语句,WHILECONTINUEBREAK语句用于设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。其中,CONTINUE语句可以使程序跳过CONTINUE语句后面的语句,回到WHILE循环的第一行命令。BREAK语句则使程序完全跳出循环,结束WHILE语句的执行。,结束WHILE语句的语法形式为:,WHILE Boolean_expression sql_statement | statement_block BREAK sql_statement | statement_block CONTINUE ,【例】利用循环计算1+2+3+99+100的值。 在查询分析器中运行如下命令: DECLARE sum int , i int SET sum = 0 SET i = 1 WHILE i=100 BEGIN SET sum = sum + i SET i = i + 1 END PRINT sum 运行结果为:5050。,【例】利用WHILE循环计算当前时间距离2009年1月1日之间的天数。 在查询分析器中运行如下命令: DECLARE num int , sj DATETIME SET sj = GETDATE() PRINT 当前时间为: + CAST( sj AS CHAR(20) SET num=0 WHILE 1=1 BEGIN SET sj = DATEADD(day,1,sj) SET num = num + 1 IF DATEPART( yy , sj ) = 2009 BREAK END PRINT 距离2009年1月1日还有 + CAST(num AS VARCHAR(10) + 天,例:一个小循环程 DECLARE X int SET X=0 WHILE x3 BEGIN SET x=X+1 PRINT x=+convert(char(1),x) -类型转换函数convert END GO 执行结果: x=1 x=2 x=3,GOTO语句,GOTO语句可以使程序直接跳到指定的标有标识符的位置处继续执行,而位于GOTO语句和标识符之间的程序将不会被执行。GOTO语句和标识符可以用在语句块、批处理和存储过程中,标识符可以为数字与字符的组合,但必须以“:”结尾。,GOTO语句的语法形式,语法 定义标签: label : 改变执行: GOTO label,游标的使用,什么是游标 游标是取

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论