内容正文:
变量
在存储过程或存储函数中定义的变量是局部变量,局部变量的作用范围是定义它的BEGIN…END块内。可以定义(声明)变量,给变量赋值和引用变量。
局部变量的定义
declare 语句定义(声明)局部变量
用户可以使用declare关键字来定义变量,然后可以为变量赋值。declare 语句申明局部的变量只适用于begin…end程序段中。declare语法格式:
declare var_name1 [,var_name2] . . . type [ default value ]
其中var_name1, var_name2参数是声明的变量的名称,这里可以定义多个变量。type参数用来指明变量的类型;defalut value字句将变量默认值设置为value。
局部变量的定义
例:在过程中定义局部变量。
create procedure up_temp1()
begin
declare i int;
declare x,y,z int default 0;
declare vStuNo char(10);
end
局部变量的赋值
用set语句给变量赋值
set格式为:
set var_name = exper[,var_name = exper]
其中var_name参数是变量的名称;expr参数是赋值的表达式。可以为多个变量赋值。用逗号隔开。
例如:SET str1=‘abc’,str2=‘123’;
局部变量的赋值
使用select语句给变量赋值
语法格式:
select col_name[,. . . ] as var_name[, . . .]
[from tb_name [where condition]];
其中col_name是列名,var_name是要赋值的变量名称。tb_name为搜索的表或视图的名;condition为查询条件。
例如:select Sname as xingming,year(now())- year(Sbirth) as age from student
局部变量的赋值
例:在成绩表score中,查询指定学号和课程号的成绩。
流程控制语句
流程控制语句是指控制程序执行流程的语句,主要指条件分支语句、循环语句等。
1.条件控制语句
有两种:IF语句和CASE语句
1)IF语句
IF search_condition1 THEN statement_list1;
[elseif search_condition2 then statement_list2;]
…
[else statement_list3;]
END IF
流程控制语句
例:创建存储过程up_getmax,给定两个整数,输出较大的数。
流程控制语句
2)case语句
case
when search_condition1 then statement_list1;
[when search_condition2 then statement_list2;]
…
[else statement_list3;]
END [case] ;
说明:case语句从上到下依次检测条件是否成立,如果成立就返回对应的值,不再继续向下比较;如果不成立则继续比较。
流程控制语句
例:查询成绩score,输出学号、课程编号、成绩和成绩等级。
存储过程操作
创建和使用存储过程或函数
变量
查看存储过程
删除存储过程
查看存储过程
(1)查看存储过程的状态。
SHOW PROCEDURE STATUS [like ‘pattern’];
(2)查看存储过程的具体信息。
SHOW CREATE PROCEDURE sp_name;
修改存储过程
修改存储过程
ALTER PROC[EDURE] 存储过程名
[@参数 数据类型 [ OUTPUT] [ ,...n ] ]
AS
BEGIN
SQL语句 [...n ]
END
删除存储过程
删除的存储过程指删除数据库中已经存在的存储过程。
语句基本形式如下:
其中,sp_name参数表示存储过程的名称。if exists 子句是MySQL的扩展,如果程序或函数不存在,防止删除命令发生错误。
drop procedure [if exists]sp_name;
小结
存储过程的定义、创建与调用,以及创建时所带