SQLServer7.0入门(六)
建立存储过程体
存储过程逻辑驻留在存储过程体中。存储过程体可以包含任何Transact SQL语句。下列Transact SQL语句不能出现在任何存储过程体中:
CREATE DEFAULT
CREATE TRIGGER
CREATE PROCEDURE
CREATE VIEW
1、局部变量
局部变量包含存储过程。当一个值需要多次存储,或者一个查询的结果需要在后续的查询中使用时,就需要使用局部变量。在这些情况下,这些值存储在局部变量中,可以在将来使用。局部变量的名称以“@”符号开头。变量名可以包含字符和数值。局部变量需要在使用前进行类型声明。需要使用SELECT语句为局部变量赋值。SELECT可以从表中检索值并将其赋给变量,或者将常数值赋给变量。一个简单的SELECT语句可以为多个局部变量赋值。
例如:
declare @ var1integer,@ var 2 var char(20)
SELECT @ var 1 = 32,
@ var2 =' myage'
如果选择查询没有返回数据,则SELECT将
2。条件表达式
存储过程中提供的条件语句包括:
if … else语句。
while语句。
1) If … else语句。该语句由三部分组成:布尔表达式、IF语句块和ELSE语句块。语法如下:
IF(boolen _ expr)
{语句}
ELSE
{语句}
IF或ELSE语句块中可以有多个语句。在这种情况下,需要语句BEGIN和END来标记语句块。
2) WHILE语句。WHILE语句用于处理重复执行的语句,直到某个条件为真。语法如下:
while(boolen _ expr)
begin
语句
break
语句
continue
END
BREAK语句结束循环的执行(即在END语句之后)。CONTINUE语句将控制过程返回到循环的开始处(即begin语句的右侧)。
注意:如果嵌套了两个或更多WHILE循环,则内部BREAK退出第二个外层的循环。在内部循环执行之前,内部循环结束后的所有语句都不能执行。
3.GOTO语句
在存储过程的执行中,语句是按顺序执行的。GOTO语句用于打破此类语句的执行顺序,它会立即跳转到一个语句,而该语句通常不会紧跟在前一个语句之后。GOTO语句与用于标识语句的标签一起使用。
例如:
使用pubs
GO
DECLARE @ num int[/Br/]SELECT[/Br/]IF @ num = 0[/Br/]GOTO Err[/Br/]ELSE[/Br/]BEGIN[/Br/]PRINT ' authors found '[/Br/]SELECT * FROM authors[/Br/]GOTO last[/Br/]end[/Br/]Err:PRINT ' no authors found '[/Br/]last:PRINT ' finish execution '[/Br/]go4,RETURN语句[/Br/]RETURN语句用于无条件地退出存储过程。RETURN之后的任何语句都不再执行。RETURN语句可以向调用语句返回值,但不能返回空值。SQL Server通常会返回存储过程的状态值。如果执行成功,将返回0,如果有错误,将返回负的错误代码。
存储过程返回的错误代码
值
说明
值
说明
0
进程已成功执行
-8
出现了一个非致命的内部问题。
-1
错过了对象
-9
达到了系统限制。
-2
有数据类型错误
-10
有致命的内部不一致错误。
-3
该进程被选为死锁的牺牲品
-11
遇到了致命的内部不一致错误。
-4
出现权限错误
-12
表或索引已损坏。
-5
出现语法错误
-13
数据库已损坏。
-6
出现混合用户错误
-14
出现硬件错误。
-7
资源错误,如空不足。
5。当需要逐行处理时,光标非常有用。游标可以打开一个结果集(根据指定条件选择的行),并提供在结果集中逐行处理的功能。根据游标的类型,它可以回滚或前进。使用光标时需要五个步骤:
0条评论