mysql 存储过程

来源:互联网 发布:杭州哲程软件 编辑:程序博客网 时间:2024/06/04 01:20

1.语法

CREATE PROCEDURE 存储过程名称
( [proc_parameter] ) [characteristics …]
routine_body

proc_parameter:指定存储过程的参数列表,形式为:
[ IN | OUT | INOUT ] 参数名称 类型
其中, IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出,
param_name 是参数名称, type表示参数的类型,该类型可以是MySQL数据库中的任意类型。
characteristics :存储过程特性选项,选项如下。
Language sql
| [not] deterministic
| {contains sql | no sql | reads sql data |modifies sql data}
|sql security {definer | invoker}
| comment ‘string’
Language sql: 说明routine_body(存储过程语句块)部分是由SQL语句组成的,当前系统支持的语言为SQL,SQL是LANGUAGE特性的唯一值。
[not] deterministic:指明存储过程执行的结果是否确定,deterministic表示执行结果是确定的,每次执行存储过程时,相同的输入会得到相同的输出。 not deterministic表示结果不确定,相同的输入可能达到不同的输出,如果没有指定任意一个值,默认为not deterministic
{contains sql | no sql | reads sql data |modifies sql data}:指明子程序使用SQL语句的限制。CONTAINS SQL表明子程序包含SQL语句,但是不包含读写数据的语句; NO SQL 表明子程序不包含SQL 语句; READS SQL DATA 说明子程序包含读数据的语句;MODIFIES SQL DATA表明子程序包含写数据的语句。默认情况下,系统会指定CONTAINS SQL
SQL SECURITY { DEFINER | INVOKER } 指明谁有权限来执行。 DEFINER表明只有定义着才能执行。 INVOKER表示拥有权限的调用者可以执行。默认情况下,系统指定为DEFINER。
COMMENT ‘string’:注释信息,可以用来描述存储过程或函数。
routine_body 是SQL代码的内容,可以用BEGIN…END来表示SQL代码的开始和结束。

0 0