- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向非过程的语言.ppt
第 3 章 SQL 高级应用 3.1 SQL 程序设计 当处理批处理语句有可能产生以下两类错误: (1)编译错误(如语法错误):编辑错误会导致批处理中的任何语句都无法执行。 (2)运行时错误(如算术溢出或违反约束),则会产生两种影响: 大多数运行时错误将停止执行批处理中当前语句和它之后的语句。 少数运行时错误(如违反约束)会停止执行当前语句,而继续执行批处理中其他所有语句。 在遇到运行时错误之前执行的语句不受影响。 在建立一个批处理的时候,应该遵循下面的规则: 批 处 理 必须以 CREATE 语句开 始,所有跟在其后面的语句都将被解释为第一个CREATE 语句定义的一部分。 不能在同一个批处理中更改表,然后引用新列。 3.1.2 变量 在 SQL Server 中,变量分为全局变量和局部变量。全局变量由系统定义和维护,用户只能查看其值但不能修改,其名称以@@开始,而局部变量则由用户定义和使用,其名称以@开始。 (1).局部变量的定义 局部变量由用户定义,仅在声明它的批处理、存储过程或者触发器中有效。批处理结束后,局部变量将变成无效。 局部变量可用 declare 语句定义,其语法格式为: declare @局部变量名 数据类型 局部变量的类型可以是系统数据类型,也可以是用户自己定义的数据类型,但不能是 text或 image 类型。 使用 declare 语句声明一个局部变量后,这个变量的值被初始化为 NULL。 (2).局部变量的赋值 如果要给局部变量赋值,可以使用 set 或 select 语句,语法格式为: set @局部变量名=表达式 select @局部变量名=表达式 2.全局变量 全局变量记录了 SQL Server 的各种状态信息,它们不能被显式的赋值或声明,而且不能由用户定义。 续表 3.1 3.1.3 流程控制语句 1.BEGIN…END 语句 BEGIN…END 语句用于将多个 Transact-SQL 语句组合为一个逻辑块。在执行时,该逻辑块作为一个整体被执行。 语法格式为: BEGIN {sql 语句块} END 其中,“sql 语句|语句块”是任何有效的 Transact-SQL 语句或以语句块定义的语句分组。 任何时候当控制流语句必须执行一个包含两条或两条以上 Transact-SQL 语句的语句块时,都可以使用 BEGIN 和 END 语句,它们必须成对使用,不能单独使用。 BEGIN 语句行后为 Transact-SQL 语句块。最后,END 语句行指示语句块结束。 BEGIN…END 语句可以嵌套使用。 例如: BEGIN DECLARE @MyVar float SET @MyVar = 456.256 BEGIN PRINT 变量@MyVar 的值为: PRINT CAST(@MyVar AS varchar(12)) END END 下面几种情况经常要用到 BEGIN 和 END 语句: WHILE 循环需要包含语句块。 CASE 函数的元素需要包含语句块。 IF 或 ELSE 子句需要包含语句块。 注意:在上述情况下,如果只有一条语句,则不需要使用 BEGIN...END 语句。 2.IF…ELSE 语句 使用 IF…ELSE 语句,可以有条件地执行语句。其语法格式如下: IF Boolean_expression {sql 语句 | 语句块} [ELSE {sql 语句 | 语句块}] 各参数含义如下: Boolean_expression 布尔表达式,可以返回 TRUE 或 FALSE。如果布尔表达式中含有SELECT 语句,必须用圆括号将 SELECT 语句括起来。 {sql 语句 | 语句块}。Transact-SQL 语句或用语句块定义的语句分组。 除非使用语句块,否则 IF 或 ELSE 条件只是影响一个 Transact-SQL 语句的性能。若要定义语句块,可以使用控制流关键字 BEGIN…END。 IF…ELSE 语句的执行方式是:如果布尔表达式的值为 TRUE,则执行 IF 后面的语句块;否则执行 ELSE 后面的语句块。 例如: IF(SELECT AVG(score) FROM SC WHERE cno = 01002)80 BEGIN PRINT 课程:01002 PRINT 考试成绩还不错 END ELSE BEGIN PRINT 课程:01002 PRINT 考试成绩一般 END 在 IF…ELSE 语句中,IF 和 ELSE 后面的子句都允
文档评论(0)