马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由MySQL用来存储数据的文件格式以已经被广泛地测试过,但是总是有外部情况可以导致数据库表被破坏:server|存储历程创建存储历程体
存储历程逻辑驻留在存储历程体中。一个存储历程体中能够包括恣意条TransactSQL语句。上面的TransactSQL语句不克不及在任何存储历程体中呈现:
·CREATEDEFAULT
·CREATETRIGGER
·CREATEPROCEDURE
·CREATEVIEW
·CREATERULE
1、 部分变量
部分变量坚持存储过程当中间值。当一个值在存储过程当中必要屡次,大概某个查询的了局必要在随后的查询中利用时,必要利用部分变量。在这些情况下,值被存储在部分变量中,并可用于未来的利用。当地变量的称号以“@”标记开首。变量的称号能够包括字符和数值。部分变量在利用前必要举行范例声明。对部分变量举行赋值必要利用SELECT语句。SELECT能够从一个表中检索出值并将其赋给某个变量,也能够给变量赋一个常量值。一个复杂的SELECT语句能够给多个部分变量赋值。
比方:
DECLARE@var1integer,@var2varchar(20)
SELECT@var1=32,
@var2=‘MyAge’
假如从SELECT查询中没有前往任何数据,而SELECT又要将数据的值付与部分变量,则该部分变量的值将不会产生改动。
2、 前提文句
存储过程当中供应的前提语句包含:
·IF……ELSE语句。
·WHILE语句。
1) IF……ELSE语句。在该语句中包括三个部分:布尔运算表达式,IF语句块和ELSE语句块。语法以下:
IF(boolen_expr)
{statements}
ELSE
{statements}
在IF或ELSE语句块中能够有多条语句,这类情况下,必要语句BEGIN和END来标记语句块。
2) WHILE语句。WHILE语句用于处置直到某个前提为TRUE前反复实行的语句。语法以下:
WHILE(boolen_expr)
BEGIN
statement(s)
BREAK
Statement(s)
CONTINUE
END
BEGIN和END语句标记轮回体。BREAK语句停止轮回的实行(即走到END语句以后)。CONTINUE语句将把持处置历程回到轮回的入手下手处(即BEGIN语句的右侧)。
注重:假如有两个或多个WHILE轮回被嵌套,则外部的BREAK加入的是次外层的轮回。外部轮回停止以后的一切语句在外部轮回实行以后才干持续实行。
3、 GOTO语句
在存储历程的实行中,语句是按次实行的。GOTO语句则是用来冲破这类语句实行的按次,它当即跳到某条语句上实行,而这条语句常常不紧跟在前一语句以后。GOTO语句与一个标记(Label)一同利用,该标记用来标识一条语句。
比方:
USEpubs
GO
DECLARE@numint
SELECT
IF@num=0
GOTOErr
ELSE
BEGIN
PRINT‘authorsfound’
SELECT*FROMauthors
GOTOLast
END
Err:PRINT‘noauthorsfound’
Last:PRINT‘Finishexecution’
GO
4、 RETURN语句
RETURN语句用于无前提的加入存储历程。RETURN以后的任何语句都不再实行。RETURN语句能够给挪用语句前往一个值,但不克不及前往NULL值。SQLServer常常为存储历程前往一个形态值。假如乐成地实行,则前往一个0,假如呈现了毛病,则前往一个为正数的毛病码。
存储历程前往的毛病码
值
说 明
值
说 明
0
历程实行乐成
-8
产生了非致命的外部成绩
-1
遗漏了工具
-9
到达了体系极限
-2
产生了数据范例毛病
-10
产生了致命的外部纷歧致毛病
-3
该处置被选择成了逝世锁的就义者
-11
产生了致命的外部纷歧致毛病
-4
产生了权限毛病
-12
表或索引被损坏
-5
产生了语法毛病
-13
数据库被损坏
-6
产生了混同的用户毛病
-14
产生了硬件毛病
-7
资本毛病,如空间不敷等
5、 利用游标(CURSOR)在必要一行一行处置时,游标非常有效。游标能够翻开一个了局汇合(依照指定的尺度选择的行),并供应在了局会合一行一行处置的功效。基于游标的范例,能够对其举行回滚大概行进。在利用游标时必要5个步骤:这类操作的执行过程是,1)按照新的表定义建立一个临时表tmpa,2)将原表数据拷贝到临时表,3)将原始表改名tmpb,4)将tmpa改名为原表名,5)将tmpb删除。 |