MySQL存储过程的创建

语法:

create procedure  procedure_name ([in|out|inout] 参数名 参数类型,.........) 过程体

DELIMITER //

      CREATE PROCEDURE  test(OUT param int)

             BEGIN

                  SELECT COUNT(*) INTO param FROM students;

             END

             //

DELIMITER;

 

参数说明:

IN:参数中的值必须再调用存储过程时指定,在存储过程中修改了该参数的值不能被返回,为默认值

OUT:该值在存储过程中被改变,可以返回

INOUT:调用的时候被指定,并且可以被改变和返回

过程体:以begin开始,以end标识结束

 

变量

(1)declare  变量名1[,变量名2...........]  数据类型[默认值];

       数据类型分为:数值类型、字符串类型、日期和时间类型

       变量赋值:set 变量名 = 变量值 [,变量名 = 变量值 .......]

(2)用户变量

用户变量一般以@开头

例子:

select 'Hello' into @param;//将字符串赋给用户变量param

select @param;//查询用户变量的值

MySQL数据库——存储过程

set @param= 'show';

create procedure testProc() 

      select concat(@param,'test');

call testProc();

MySQL数据库——存储过程

存储过程查询:

(1)select name from mysql.proc where db='practice';

MySQL数据库——存储过程

(2) select routine_name from information_schema.routines where routine_schema='practice';

MySQL数据库——存储过程

(3)show create procedure practice.inout_param;

MySQL数据库——存储过程

(4)show procedure status where db='practice'

MySQL数据库——存储过程

 

存储过程修改

语法格式:

ALTER {PROCEDURE|FUNCTION} sp_name[characteristic.............]

characteristic:

{CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA 

| SQL SECURITY | DEFINER | INVOKER

| COMMENT 'string'}

参数说明:

sp_name:存储过程或者函数的名称

characteristic:修改存储过程的哪一部分,取值如下:

CONTAINS SQL :表示子程序包含SQL语句,但是,不包含读或写数据的语句

NO SQL:表示子程序中,不包含SQL语句

READS SQL DATA:表示子程序中,包含读数据的语句

MODIFIES DATA:表示子程序中,包含写数据的语句

SQL SECURITY {DEFINER | INVOKER},指明谁有权来执行

DEFINER:表示只有定义者自己才可以执行

INVOKER:表示调用者可以执行

COMMENT 'String' :表示注释信息

 

 

 

相关文章: