数据库数据库完整性触发器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在SQL Server中存储过程分为两类:即系统 提供的存储过程和用户自定义的存储过程。
创建存储过程
在SQL Server中,可以使用三种方法创建存 储过程 :
①使用创建存储过程向导创建存储过程。 ②利用SQL Server 企业管理器创建存储过程。 ③使用Transact-SQL语句中的CREATE
data_type:用于指定参数的数据类型。
VARYING:用于指定作为输出OUTPUT参数支持的结果集。 Default:用于指定参数的默认值。 OUTPUT:表明该参数是一个返回参数。
RECOMPILE:表明 SQL Server 不会保存该存储 过程的执行计划 。
PROCEDURE命令创建存储过程。
创建存储过程时,需要确定存储过程的三个组成 部分:
①所有的输入参数以及传给调用者的输出参数。 ②被执行的针对数据库的操作语句,包括调用其
它存储过程的语句。 ③返回给调用者的状态值,以指明调用是成功还
是失败。
1. 使用创建存储过程向导创建存储过程
在企业管理器 中,选择工具菜单 中的向导选项,选 择“创建存储过程 向导” ,则出现欢 迎使用创建存储过 程向导对话框。根 据图提示可完成创 建存储过程。
T-SQL的函数:系统函数、聚集函数、数学函数、 字符串函数、数据类型转换函数和日期函数等。
T-SQL的存储过程:由SQL语句组成,分系统存 储过程和用户自定义存储过程。
2).T-SQL编程
A.注释(Comment)方式
(1) 多行时,用 /* …. */ (2) 单行时,用 --
B.变量
(1)局部变量 表示及概念:@变量名,由用户定义并使用。 局部变量定义:DECLARE @变量名 类型 [, …n]
IF (SELECT AVG(price) FROM titles) < 20 UPDATE titles SET price=price*1.5
ELSE IF (SELECT AVG(price) FROM titles) >= 20
UPDATE titles SET price=price*1.3 ELSE
创建存储过程前,应该考虑下列几个事项: ①不能将 CREATE PROCEDURE 语句与其它 SQL
语句组合到单个批处理中。 ②创建存储过程的权限默认属于数据库所有者,
该所有者可将此权限授予其他用户。 ③存储过程是数据库对象,其名称必须遵守标
识符规则。 ④只能在当前数据库中创建存储过程。 ⑤一个存储过程的最大尺寸为128M。
datediff(日期元素,较早日期表达式,较晚日期表达 式):两个日期相减后,按日期元素指定部分转化后返 回。
C.数学函数
函数 abs(数值表达式)
示例 abs(-100)
结果 100
ceiling(数值表达式)
ceiling(99.2)
100
floor(数值表达式)
floor(99.2)
99
round(数值表达式,整数表达式)
(1) @@error:返回最后一个语句产生的错误码。 (2) @@rowcount:返回语句执行后受影响的行数。 (3) @@version:SQL SERVER版本号。 (4) @@trancount:事务计数。 (5) @@transtate:事务状态(成功、失败…)。
C.SELECT用法
(1) 查看表或视图的内容; (2) 执行函数,返回值到客户端:SELECT db_name()
(4) GOTO ...:跳到用户定义的标号处; (5) RETURN:无条件退出; (6) IF EXISTS/IF NOT EXISTS:是否有数据存在
IF NOT EXISTS (SELECT * FROM titles WHERE title_id=‘010101’)
BEGIN PRINT ‘没有010101的任何记录’ RETURN
其中,pubdate为日期型。
style取值 输出格式
2
yy.mm.dd
3
dd/mm/yy
4
dd.mm.yy
5
dd-mm-yy
102 yyyy.mm.dd
103 dd/mm/yyyy
104 dd.mm.yyyy
105 dd-mm-yyyy
B.有关日期的几个函数
(1) getdate() 用途:将服务器OS的时间送客户机。
示例:SELECT getdate()
(2) datename()与datepart() datename(日期元素,日期表达式):以字符串形式 返回日期元素指定的日期的名字 datepart(日期元素,日期表达式):以数字形式返 回日期元素指定的日期的名字
日期元素及其指定返回的日期部分为: ① yy:返回日期表达式中的年year或年数。
3).T-SQL提供的函数
A.字符串操作
(1) 连接操作: + (2) convert函数 语法:convert(类型符,表达式[,style])
作用:将表达式按指定风格转换成指定的类型, 其中的style只用于日期类型到字符串的转换。
(3)日期 ===> 字符串
示例: convert(char(10),pubdate,105)
DECLARE @ myqty int,@msg varchar(40) 说明:(1) 变量一旦定义,系统自动赋NULL值。
(2) 对局部变量的赋值用SELECT语句。
SELECT @myqty=60
(2)全局变量 表示及概念: @@变量名 ,由系统定义,
用户可使用之。
作用:用于指明系统运行过程中的运行状 态,用户只能引用,不能修改和定义。 常用的全局变量:
F.RAISERROR
用途:系统有很多系统信息及其代码(代码值 在两万以下),用户也可用RAISERROR,自己定 义错误信息及其代码(其代码值应在两万以上)。
语法:RAISERROR 错误代码 { ‘错误信息’ | 局部变量 } [, 参数表] 例: DECLARE @table_name varchar(30) SELECT @ table_name =‘TITLE’ RAISERROR 99999 ‘表%1!不存在。’,@table_name
END
来自百度文库
(7) WAITFOR:延迟某段时间 语法:WAITFOR { DELAY 日期时间格式的时间值 | TIME 时间 | …}
示例:WAITFOR DELAY '00:30:00‘ /* 延迟30分钟 */
E.信息显示
(1) Print ‘…..’ (2) Print @msg (3)用参数嵌套形式加入不同的值: Print ‘….%1!…..%2!….’, @参数1,@参数2,·····
AS sql_statement [ ...n ]
用CREATE PROCEDURE创建存储过程的语法参数的意义如下:
procedure_name:用于指定要创建的存储过程的名称。 number:该参数是可选的整数,它用来对同名的存储过程分 组,以便用一条 DROP PROCEDURE 语句即可将同组的过程一 起除去。 @parameter:过程中的参数。在 CREATE PROCEDURE 语句中 可以声明一个或多个参数。
补充: 1).T-SQL语言简介
T-SQL组成:SQL语句、函数和存储过程。
T-SQL的子语言:数据定义语言DDL (Data Definition Language) 、数据操纵语言DML(Data Manipulation Language)和数据控制语言DCL(Data Control Language)。
② qq:返回日期表达式表示的季quarter或季数。
③ mm:返回日期表达式中的月month或月数。
④ dw:返回日期表达式表示的星期几day of week。
⑤ dy:返回日期表达式表示的一年中的第几天day of year
⑥ dd:返回日期表达式中的天或天数day。
⑦ wk:返回日期表达式表示的一年中的第几个星期 week或星期数。
(3) 给变量赋值
①直接赋值:Select @xxxx =2。一次只能一个。 ②从表中提取值赋给变量(应保证是唯一行且类
型一致)。 示例:SELECT @tp=price FROM titles T WHERE T.id=‘Bu1032’
(4)查看变量值:Select @变量
D.流程控制语句
(1) IF (条件关系式) ELSE [IF]:如果关系式含有 SELECT语句,则该SELECT语句须用圆括号括起,其 嵌套级别最多为150;
(2)在文本框中可以输入创建存储过程的T_SQL语 句,单击“检查语法”,则可以检查语法是否正确;单 击“确定”按钮,即可保存该存储过程。如果要设置权 限,单击“权限…”按钮。
选择新建存储过程对话框(1)
选择新建存储过程对话框(2)
新建存储过程对话框
设置权限对话框
3. 使用Transact-SQL语句中的CREATE PROCEDURE命令创建存 储过程
⑧ hh:返回日期表达式中的小时hour或小时数。
示例: Select datename(mm,pubdate) from titiles where title_id=‘Bu1032’ 返回June,如用datepart则返回 6。
(3) dateadd()与datediff()
dateadd(日期元素,数值,日期表达式):将数值转 换成日期元素指定的部分加到日期表达式上返回。
新建SQL Server组
欢迎使用创建存储过程向导对话框
选择数据库对话框
选择数据库对象对话框
完成创建存储过程向导对话框
编辑存储过程属性对话框
编辑存储过程SQL对话框
2. 使用SQL Server 企业管理器创建存储过程
(1)在SQL Server企业管理器中,选择指定的服务 器和数据库,用右键单击要创建存储过程的数据库,在 弹出的快捷菜单中选择“新建”选项,再选择下一级菜 单中的“存储过程…”选项,如图5-77所示;或者用右 键单击存储过程图标,从弹出的快捷菜单中选择“新建 存储过程…”选项,如图5-78所示。均会出现创建存储 过程对话框。
power(2,10) sqrt(4)
sin(pi())
1024 2
0
4)存储过程
创建存储过程 执行存储过程 查看和修改存储过程 重命名和删除存储过程
存储过程的概念
SQL Server提供了一种方法,它可以将一些 固定的操作集中起来由SQL Server数据库服 务器来完成,以实现某个任务,这种方法就 是存储过程。
(3) WHILE ...BREAK/CONTINUE :循环控制语句 示例:
WHILE (SELECT AVG(price) FROM titles)<20 BEGIN UPDATE titles SET price=price+1 IF (SELECT MAX(price) FROM titles)>30 BREAK END
PRINT ‘平均价格未知!’
(2) BEGIN ... END: 用于界定由多条SQL语句组成的语句块; 示例: DECLARE @avg_price money SELECT @avg_price=AVG(price) FROM titles IF @avg_price <20 BEGIN UPDATE titles SET price=price*1.5 PRINT ‘价格提高50%’ END
使用CREATE PROCEDURE创建存储过程的语法形式如下:
CREATEPROC[EDURE]procedure_name[;number] [{@parameterdata_type}
[VARYING][=default][OUTPUT] ][,...n] WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}] [FORREPLICATION]
round(66.2387,2)
66.24
exp(浮点表达式)
exp(0)
1
rand([整数])
rand(23)
log(浮点表达式)
log(1)
0
pi()
pi()
3.14159265...
power(数值表达式,指数表达式)
sqrt(数值表达式)
sin(浮点表达式),cos(浮点表达式),tan(浮点 表达式)
相关文档
最新文档