MySQL数据库——存储过程

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;//查询用户变量的值

set @param= 'show';

create procedure testProc() 

      select concat(@param,'test');

call testProc();

存储过程查询:

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

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

(3)show create procedure practice.inout_param;

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

 

存储过程修改

语法格式:

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' :表示注释信息

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值