SQLServer编程基础及存储过程

上传人:飞*** 文档编号:54682736 上传时间:2018-09-17 格式:PPT 页数:63 大小:319.50KB
返回 下载 相关 举报
SQLServer编程基础及存储过程_第1页
第1页 / 共63页
SQLServer编程基础及存储过程_第2页
第2页 / 共63页
SQLServer编程基础及存储过程_第3页
第3页 / 共63页
SQLServer编程基础及存储过程_第4页
第4页 / 共63页
SQLServer编程基础及存储过程_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《SQLServer编程基础及存储过程》由会员分享,可在线阅读,更多相关《SQLServer编程基础及存储过程(63页珍藏版)》请在金锄头文库上搜索。

1、本章要点,SQL Server编程基础 游标的使用 存储过程,SQL Server 编程基础,6.1 程序注释 注释语句不是可执行语句,不参与程序的编译。 注释语句通常是一些说明性的文字,对代码的实现方式及功能给出简要的解释和提示。 两种形式的程序注释语句。 - 是单行写的注释语句 /* */ 是多行的注释语句,合法的注释语句: USE 订货管理 GO -第一行注释. -第二行注释 SELECT * FROM 职工 /*第一行注释.第二行注释.*/ SELECT * FROM 仓库 -在行尾加注释 -在SQL语句中间加注释. SELECT 职工号, /* 仓库号 ,*/ 工资 FROM 职工,

2、-注释语句包含着一个语法错误(不能包含GO): USE 订货管理 GO SELECT * FROM 职工 /*The GO 此注释执行时将出现错误*/ SELECT * FROM 仓库 GO,6.2 批处理是从客户机传递到服务器上的一组完整的数据和SQL指令。 一个批处理中,可以包含一条SQL指令,也可以包含多条SQL指令。 批处理的所有语句被作为一个整体,进行成组的分析、编译和执行,是不可分割的。 在一个批处理中存有一个语法错误,则所有的语句都无法通过编译。所有的批处理命令都使用GO作为结束的标志。,-正确的批处理。 *此批处理包含多个操作*/ USE 订货管理 SELECT * FROM

3、职工WHERE 工资1230ORDER BY 工资 DESCSELECT * FROM 职工 WHERE 职工号 =E1UPDATE 仓库SET 城市 =兰州WHERE 仓库号 =WH1 GO,-下面的语句会产生一个语法错误 USE 订货管理 -Go CREATE VIEW 职工资料ASSELECT * FROM 职工 GO SELECT * FROM 职工资料 GO,6.3 局部变量 SQL Sever支持两种形式的变量 1、局部变量:作用域局限在一定范围内的Transact-SQL对象。局部变量可在一个批处理(存储过程或触发器)中被声明或定义,然后这个批处理内的SQL语句就可以设置这个变量

4、的值,或者是引用这个变量已经赋予的值。当批处理结束后,这个局部变量也就随之消亡。 2、全局变量:全局变量用来记录SQL Server 服务器活动状态信息的一组数据。全局变量是SQL Server事先定义好,提供给用户使用的变量。全局变量是固定的,由系统提供的,用户不能参与定义,不能变动,只能拿来使用,对用户而言是只读的。,6.3.1、声明局部变量 DECLARE MyCounter INT声明一个整数类型变量,变量名为 MyCounterDECLARE LastName NVARCHAR (30),Firstname NVARCHAR(20),State nvarchar(2)可以在一个DEC

5、ARE语句中声明多个变量,6.3.2、为局部变量赋值 方式有两种 1、使用SELECT语句 2、使用SET语句在使用局部变量的之前,要对变量赋值。如果事先不对变量赋值,变量将保持NULL的状态。这样使用时就没有结果。有时会产生严重的错误。,-使用SELECT语句赋值 -为变量直接赋值 DECLARE MyCounter INT SELECT MyCounter = 20 GO,-从“职工”的表中查询出一条数据赋值给已经声明的变量 USE 订货管理 GO DECLARE StockNO varchar(20) SELECT StockNO = 仓库号 FROM 职工 WHERE 职工号 = E1

6、 Print StockNO -显示数据 GO,-如一个查询中返回了多个值,只有最后一个查询结果被赋给变量 -使用SELECT语句赋值 USE 订货管理 GO DECLARE WorkNO varchar(20) SELECT WorkNO = 职工号FROM 职工WHERE 工资=1220 print WorkNO Go,-在一条语句中为多个变量赋值,例如: -使用SELECT语句赋值 USE 订货管理 GO DECLARE SalaryMAX INT,SalaryMIN INT SELECT SalaryMAX=MAX(工资),SalaryMIN=MIN(工资)FROM 职工 print

7、SalaryMAX print SalaryMIN GO,-SELECT语句赋值功能和查询功能不能同时 -混合使用,否则系统会产生错误信息。 -使用SELECT语句赋值 USE 订货管理 GO DECLARE SalaryMAX INT,SalaryMIN INT SELECT SalaryMAX =MAX (工资),SalaryMIN = MIN(工资), MIN(工资)FROM 职工 GO,使用SET语句对变量进行赋值 DECLARE myvar char (20)SET myvar = This is a test GO -依次赋值多个变量 DECLARE myvarl char (20

8、),myvar2 char(20),myvar3 char(20) SET myvarl = This is a test SET myvar2 = This is a test SET myvar3 = This is a test GO,-将查询到的数据的数目赋值给变量: USE 订货管理 GO DECLARE rows int SET rows =(SELECT COUNT (*) FROM 职工 ) print rows,-应用已经赋值的局部变量 USE 订货管理 GO DECLARE state varchar(10) SET state = 兰州 SELECT 仓库号, 城市 FR

9、OM 仓库 WHERE 城市 = state GO,6.4 全局变量 全局变量用来记录SQL Server 服务器活动状态的一组数据。全局变量是一组SQL Server事先定义好,提供给用户使用的变量。这些变量是固定的,由系统提供的,用户不能参与定义,不能变动,只能拿来使用,对用户而言是只读的,它反映的是SQL Server服务器当前活动状态的信息。 SQL Server一共提供了30多个全局变量 只介绍一些常用全局变量的功能和使用方法,1.CONNECTIONS记录自最后一次服务器启动以来,所有针对此服务器进行的连接数目,包括没有连接成功的尝试。 SELECT GETDATE() AS 今日

10、时间, CONNECTIONS AS 连接数目,2.CPU_BUSY 记录自最近一次服务器启以来,以ms为单位的CPU工作时间。 SELECT CPU_BUSY AS CPU ms, GETDATE() AS As of,3、CURSOR_ROWS返回在本次服务器连接中,打开游标取出数据行的数目。 4、DBTS返回当前数据库中timestamp数据类型的当前值。 5.ERROR返回执行上一条Transact-SQL语句所返回的错误号。在SQL Server 服务器执行完一条语句后,语句执行成功,则返回ERROR的值为0;如果该语句执行有错误,则ERROR返回相应的错误编号,该编号将保持,直到下

11、一条语句得到执行为止。,6.FETCH_SATTUS 返回上一次使用游标FETCH操作所返回的状态值。 6.IDENTITY 返回近一次插入的identity列的数值 8.IDLE 返回以ms为单位计算的SQL Server 服务器自上次启动后闲置的时间。 9.IO_BUSY 返回以ms为单位计算的SQL Server 服务器自启动后用于执行输入和输出操作的时间。,10.LOCK_TIMEOUT 返回当前对数据锁定的超时设置。 11.PACK_RECEIVED 返回SQL Server 服务器自最近一次启动以来一共从网络上接收数据分组的数目。 12.PACK_SENT 返回SQL Server

12、 服务器自最近一次启动以来一共向网络上发送数据分组的数目。 13.PROCID 返回当前存储过程的Id标识。,16.SPID 返回当前服务器进程的ID标识。16.TOTAL_ERRORS 返回自SQL Server服务器启动来,所遇到的读写错误的总数,例如: SELECT TOTAL_ERRORS AS “Errors“18.TOTAL_READ 返回自SQL Server服务器启动来,读磁盘的次数。19.TOTAL_WRITE 返回自SQL Server服务器来启动来,写磁盘的次数。 20.TRANCOUNT 返回当前连接中,处于活动状态事务的数目。,6.5 条件判断结构语句 6.5.1、I

13、F.ELSEUSE 订货管理 GO IF (SELECT AVG (工资) FROM 职工WHERE 仓库号 = WH1) 1220 BEGINPRINT WH1仓库中,平均工资低于1220SELECT * FROM 职工 WHERE 仓库号 =WH1END ELSEPRINT 平均工资超过1220 GO,-IF嵌套 USE 订货管理 GO IF (SELECT AVG(工资) FROM 职工 WHERE 仓库号 = WH1)=1220BEGINPRINT WH1仓库中,平均工资不低于1220 SELECT * FROM 职工 WHERE 仓库号 = WH1END GO,6.5.2、BEGIN

14、.END语句块 USE 订货管理 Go DECLARE message varchar(255) /*声明用于发布消息的变量*/ IF EXISTS(SELECT * FROM 职工 WHERE 工资 =1220ENDGO,6.5.3、WHILE 循环结构 USE 订货管理 GO While EXISTS(SELECT * From 职工 Where 工资2500BREAKELSECONTINUE END PRINT 工资提高了!,6.5.4、WaitFor语句 延时语句。为了暂停执行一个指定的时间间隔或者到一个指定的时间,可以使用WaitFor语句。该语句有两种形式 WaitFor Dela

15、y 00:10:30-Delay指定时间间隔为10分钟30秒 或者 WaitFor Time 14:30-使用Time关键字等到下午2:30。,6.5.5、RETURN 在批处理、语句块或存储过程中,使用RETURN语句可以立即从当前所在的程序结构中退出,位于RETURN语句后面的语句将不会被执行。在SQL Server中系统存储过程返回值为0时,表示调用成功,否则就是有问题发生。,Return 示例,USE 订货管理 select * from 仓库 return select * from 职工,6.6 游标通常情况下,数据库执行SQL命令多是同时处理数据集(记录集)内的所有数据。但经常用

16、户需要针对数据集中的一行进行操作。使用游标,能在服务器端选择识别一个数据集内指定的工作行,从而按行操作。游标提供了一种服务器内部处理记录集的方法。,游标的功能比较复杂,要灵活使用游标需要花费较长的间和积累经验。使用游标,有五个基本步骤: 1).声明游标; 2).打开游标; 3).从游标中重复提取(读取)行,有选择地修改或者删除所取的行; 4).关闭游标; 5).当不再需要游标时,释放游标。,SQL Server 2000 支持三种游标实现 1、Transact-SQL 游标主要在 Transact-SQL 脚本、存储过程和触发器中。Transact-SQL 游标在服务器上实现。并由客户端发送到服务器的 Transact-SQL 语句管理。 2、应用编程接口(API)服务器游标支持 OLE DB、ODBC 和 DB-Library 中的 API 游标函数。API 服务器游标在服务器上实现。 3、客户端游标,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号