您的位置:首页 > 数据库 > MySQL

Mysql存储过程

2015-06-12 22:26 477 查看
一、概述

存储过程是数据库开发人员将功能复杂、使用频繁的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才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: