Mysql存储过程
2015-06-12 22:26
525 查看
一、概述
存储过程是数据库开发人员将功能复杂、使用频繁的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才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
存储过程是数据库开发人员将功能复杂、使用频繁的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才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
相关文章推荐
- mysql学习笔记_函数
- mysql 编码测试
- mysql delimiter
- mysql 求时间段平均值
- mysql格式化操作
- mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- mysql字符集
- mysql 内连接 左连接 右连接 外连接
- mysql 聚集函数和分组
- Ubuntu 安装mysql和简单操作
- Mysql 数据库中文乱码问题
- mysql免安装版配置
- scrapy爬虫成长日记之将抓取内容写入mysql数据库
- Mysql触发器
- hibernate+mysql时,会出现事物不管用
- Mysql的一些操作(删除表中的重复元素,查询重复元素)
- 【MySql】MySql基础使用详解
- windows上mysql常用操作
- MySQL:ERROR 2002 (HY000)
- Centeros 系统下error while loading shared libraries:libmysqlclient.so.18错误