Mysql存储过程

一、概述

存储过程是数据库开发人员将功能复杂、使用频繁的Mysql代码封装成Mysql存储过程,从而提高Mysql代码重用性。


二、语法格式

create proceduce 存储过程名(参数一,参数二,)

存储过程选项

begin

存储过程语句;

end;

存储过程选项

language sql | [not] deterministic | {contains sql | no sql | reads sql ddata | modfies sql data} | sql security {  definer | invoker} | comment '注释'

说明

language sql 默认选项,说明使用sql语言编写

deterministic 函数返回是否确定

contains sql 函数体不包含读写数据的语句

no sql 函数体不包含sql语句

read sql data 函数体包含select语句,但不包含更新语句

modifies sql data 函数体包含更新语句

sql security 用于指定函数的执行许可

definer 默认选项,只能由创建者调用

invoker 可以被其他数据库用户调用

comment 为函数体添加注释信息


三、举例

delimiter //

create procedure test_proc(in user_no int,out user_count int)

read sql data

begin

select count(*) into user_count from user where userno=user_no;

end;

//

delimiter ;

以下有使用delimiter的原因


//初始化

set @user_no='123456';

set @user_count=0;

//调用存储过程

call test_proc(@user_no,@user_count);

//查看user_count被赋值后的结果

select @user_count;


注意:

delimiter //delimiter ;两句,delimiter 是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,此用这个命令转换一下";"“//”,这样只有收到“//”才认为指令结束可以执行,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值