文档介绍:数据库原理与应用
第五章存储过程、触发器和数据完整性
1
2
SQL Server 编程结构
存储过程
3
触发器
4
数据库完整性
SQL Server编程结构
:
DECLARE @局部变量名数据类型
[, @局部变量名数据类型…]
例:下面的语句声明了两个变量variable1和variable2,数据类型分别为int和datetime。
DECLARE ***@variable1 int,
***@variable2 datetime
变量
注:在同一个DECLARE语句中,可以同时定义多个变量,变量之间用逗号隔开。
:
SET @变量名=表达式
SELECT @变量名=表达式
SELECT 列1,……,列n
@变量名=表达式
FROM 表名
WHERE 条件表达式
变量
注:1)如果SELECT语句返回多个数值,则局部变量取最后一个返回值。
2)SELECT语句的赋值功能和查询功能不能混合使用,否则系统会产生错误信息。
显示信息
注意:使用PRINT语句只能显示字符数据类型。
语法如下:
RAISERROR (<错误号>| <’错误消息’>, [严重度][, 状态[, 参数1][, 参数2]])
注释语句
语法为:
/*注释文本*/
或
-- 注释文本
批处理
批处理是成组执行的一条或多条T-SQL指令,被作为整体进行语法分析、优化、编译和执行。如果批处理的任何部分在语法上不正确,或批处理参照的对象不存在,则整个批处理无法执行。
GO语句用于指定批处理语句的结束处,单独占用一行。GO本身并不是T-SQL语句的组成部分,它只是一个用于表示批处理结束的前端指令。
注意:
(1)不能在同一个批处理中删除数据库对象(表、视图或存储过程等),然后又引用或重新创建它们。
(2)不能在同一个批处理中,修改表的列后又引用它。
(3)用SET语句设置的选项只在批处理结束时才使用,可以将SET语句与查询在批处理中组合起来,但有些SET选项不能在批处理中使用。
流程控制语句
…END语句
语法形式如下:
BEGIN
语句
......
END
…ELSE语句
语法形式如下:
IF 条件表达式
语句
[ELSE [IF条件表达式]
语句]
执行过程为:如果条件表达式为真,则执行IF后面的语句或语句块,如果条件表达式为假,则执行ELSE后面的语句或语句块。
【】在电力抢修工程数据库中,如果stock表中存在库存量低于1的物资,就显示文本:the amount is not enough;否则显示所有物资信息。
流程控制语句
IF exists(SELECT * FROM stock where amount<1)
PRINT ' the amount is not enough!'
ELSE
BEGIN
SELECT *
FROM stock
END
注意:IF语句常与关键字子EXISTS结合使用,用于检测是否存在满足条件的记录,只要检测到有一行记录存在,就为真。
语法形式如下:
WHILE 逻辑表达式
语句
【】将stock表中所有物资单价增加10%,直到有一个物资单价超过15000或单价总和超过50000为止。
WHILE (SELECT sum(unit) FROM stock)<50000
BEGIN
UPDATE stock set unit = unit *
IF EXISTS(SELECT * FROM stock WHERE unit>15000)
break
ELSE
continue
END
流程控制语句