SQLServer编程基础及存储过程

上传人:野鹰 文档编号:3174941 上传时间:2017-07-30 格式: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 订货管理GOSELECT * FROM 职工/*TheGO 此注释执行时将出现错误*/SELECT * FROM 仓库GO,6.2 批处理 是从客户机传递到服务器上的一组完整的数据和SQL指令。一个批处理中,可以包含一条SQL指令,也可以包含多条SQL指令。批处理的所有语句被作为一个整体,进行成组的分析、编译和执行,是不可分割的。 在一个批处理中存有一个语法错误,则所有的语句都无法通过编译。所有的批处理命令都使用GO作为结束的标志。,-正确的批处理。*此批处理包含多个操作*/USE 订货管理SELECT * FROM 职工 WHERE 工资1230 ORDER BY 工资

3、 DESCSELECT * FROM 职工 WHERE 职工号 =E1UPDATE 仓库 SET 城市 =兰州 WHERE 仓库号 =WH1GO,-下面的语句会产生一个语法错误 USE 订货管理-GoCREATE VIEW 职工资料 AS SELECT * FROM 职工GOSELECT * 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) 可以在一个DECARE语句中声明多个变量,6.3.2、为局部

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

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

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

8、= This is a testSET myvar2 = This is a testSET myvar3 = This is a testGO,-将查询到的数据的数目赋值给变量:USE 订货管理GODECLARE rows intSET rows =(SELECT COUNT (*) FROM 职工 )print rows,-应用已经赋值的局部变量USE 订货管理GODECLARE state varchar(10)SET state = 兰州SELECT 仓库号, 城市FROM 仓库 WHERE 城市 = stateGO,6.4 全局变量全局变量用来记录SQL Server 服务器活动状态

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

10、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返回相应的错误编号,该编号将保持,直到下一条语句得到执行为止。,6.FETCH_SATTUS返回上一次使用游标FETCH操作所返回的状态值。 6.IDENTITY

11、返回近一次插入的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 服务器自最近一次启动以来一共向网络上发送数据分组的数目。 13.PROCID返回当前存储过程的Id标识。,16.SPID返回当前服务器进程的

12、ID标识。16.TOTAL_ERRORS返回自SQL Server服务器启动来,所遇到的读写错误的总数,例如:SELECT TOTAL_ERRORS AS Errors18.TOTAL_READ返回自SQL Server服务器启动来,读磁盘的次数。19.TOTAL_WRITE返回自SQL Server服务器来启动来,写磁盘的次数。20.TRANCOUNT 返回当前连接中,处于活动状态事务的数目。,6.5 条件判断结构语句6.5.1、IF.ELSE USE 订货管理 GOIF (SELECT AVG (工资) FROM 职工 WHERE 仓库号 = WH1) 1220 BEGIN PRINT W

13、H1仓库中,平均工资低于1220 SELECT * FROM 职工 WHERE 仓库号 =WH1 ENDELSE PRINT 平均工资超过1220 GO,-IF嵌套 USE 订货管理GOIF (SELECT AVG(工资) FROM 职工 WHERE 仓库号 = WH1)=1220 BEGIN PRINT WH1仓库中,平均工资不低于1220 SELECT * FROM 职工 WHERE 仓库号 = WH1 ENDGO,6.5.2、BEGIN.END语句块 USE 订货管理GoDECLARE message varchar(255) /*声明用于发布消息的变量*/IF EXISTS(SELECT * FROM 职工 WHERE 工资 1220) /*进行逻辑判断*/ BEGIN SET message= 有些职工的工资低于1220: PRINT message SELECT * FROM 职工 WHERE 工资=1220 END GO,

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

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

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