存储过程是为了完成特定功能的SQL语句集,经过第一次编译后,之后调用都不用再进行编译
- 创建:
create procedure procedure_name ([parameter list]) [characteristic ...]begin routine_bodyend
其中,
procedure_name: 为存储过程名称;
parameter list: 为参数列表,可以包含零个或多个参数,参数与参数之间逗号(,)分隔。
每个参数的形式为:参数类型 参数名称 数据类型
参数类型:in(输入参数) out(输出参数) inout(输入输出参数,调用时被指定,可以被修改和返回)
characteristic:该项可选,表示存储过程特性,有如下取值:
1)language sql: 存储过程由SQL语句组成,目前sql是language特性的唯一值;
2)[not] deterministic: 表示结果是否为确定的值,即相同输入是否一定能得到相同输出,默认为not deterministic;
3)contains sql(存储过程包含sql语句,但不包含读写数据的语句)| no sql(存储过程不包含sql语句)| reads sql data(存储过程包含读数据的语句)|modifies sql data(存储过程包含读写数据的语句)
4)sql security {definer(只有定义者可以执行该存储过程)|invoker(拥有权限的调用者可以执行)} ,默认definer
5)comment ‘string‘(注释,描述存储过程)
routine_body: 程序体。
- 调用:
call procedure_name(parameter list);
- 删除:
drop procedure procedure_name;
PS:
1、创建存储过程前,要先指定存储过程所属的数据库;
2、查询某个数据库所包含的存储过程(设数据库名称为factory,包含一个名为sum_app的存储过程):
3、查询存储过程创建语句:
4、可以在一个存储过程中调用另一个存储过程,但是不能删除另一个存储过程。
时间: 2024-11-03 22:33:03