当前位置:  数据库>mysql

MySQL 存储过程的基本用法介绍

    来源: 互联网  发布时间:2014-09-06

    本文导语:  在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。 特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,...

在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。

特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。

一、MySQL 创建存储过程

"pr_add" 是个简单的 MySQL 存储过程,这个MySQL 存储过程有两个 int 类型的输入参数 "a"、"b",返回这两个参数的和。
代码如下:

drop procedure if exists pr_add;

计算两个数之和
代码如下:

create procedure pr_add
(
a int,
b int
)
begin
declare c int;
if a is null then
set a = 0;
end if;
if b is null then
set b = 0;
end if;
set c = a + b;
select c as sum;
/*
return c;
不能在 MySQL 存储过程中使用。return 只能出现在函数中。

*/
end;

二、调用 MySQL 存储过程
代码如下:

call pr_add(10, 20);

执行 MySQL 存储过程,存储过程参数为 MySQL 用户变量。
代码如下:

set @a = 10;
set @b = 20;
call pr_add(@a, @b);

三、MySQL 存储过程特点

创建 MySQL 存储过程的简单语法为:
代码如下:

create procedure 存储过程名字()
(
[in|out|inout] 参数 datatype
)
begin
MySQL 语句;
end;

MySQL 存储过程参数如果不显式指定"in"、"out"、"inout",则默认为"in"。习惯上,对于是"in" 的参数,我们都不会显式指定。

1. MySQL 存储过程名字后面的"()"是必须的,即使没有一个参数,也需要"()"

2. MySQL 存储过程参数,不能在参数名称前加"@",如:"@a int"。下面的创建存储过程语法在 MySQL 中是错误的(在 SQL Server 中是正确的)。 MySQL 存储过程中的变量,不需要在变量名字前加"@",虽然 MySQL 客户端用户变量要加个"@"。
代码如下:

create procedure pr_add
(
@a int, -- 错误
b int -- 正确
)

3. MySQL 存储过程的参数不能指定默认值。

4. MySQL 存储过程不需要在 procedure body 前面加 "as"。而 SQL Server 存储过程必须加 "as" 关键字。
代码如下:

create procedure pr_add
(
a int,
b int
)
as -- 错误,MySQL 不需要 "as"
begin
mysql statement ...;
end;

5. 如果 MySQL 存储过程中包含多条 MySQL 语句,则需要 begin end 关键字。
代码如下:

create procedure pr_add
(
a int,
b int
)
begin
mysql statement 1 ...;
mysql statement 2 ...;
end;

6. MySQL 存储过程中的每条语句的末尾,都要加上分号 ";"
代码如下:

...
declare c int;
if a is null then
set a = 0;
end if;
...
end;

7. MySQL 存储过程中的注释。
代码如下:

/*
这是个
多行 MySQL 注释。
*/
declare c int; -- 这是单行 MySQL 注释 (注意 -- 后至少要有一个空格)
if a is null then # 这也是个单行 MySQL 注释
set a = 0;
end if;
...
end;

8. 不能在 MySQL 存储过程中使用 "return" 关键字。
代码如下:

set c = a + b;
select c as sum;
/*
return c; -- 不能在 MySQL 存储过程中使用。return 只能出现在函数中。
*/
end;

9. 调用 MySQL 存储过程时候,需要在过程名字后面加"()",即使没有一个参数,也需要"()"
代码如下:

call pr_no_param();

10. 因为 MySQL 存储过程参数没有默认值,所以在调用 MySQL 存储过程时候,不能省略参数。可以用 null 来替代。

    
 
 

您可能感兴趣的文章:

  • mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
  • MySQL和PHP中substr函数用法
  • mysql update语句的用法详解
  • 发现mysql一个用法,比较有用
  • mysql_fetch_row()与mysql_fetch_array()用法区别
  • 浅谈SQLServer的ISNULL函数与Mysql的IFNULL函数用法详解
  • php pdo mysql query用法介绍
  • MySQL Order By用法分享
  • mysql中limit的用法深入分析
  • mysql筛选GROUP BY多个字段组合时的用法分享
  • mysql截取的字符串函数substring_index的用法
  • mysql alter语句用法实例
  • 浅析MySQL replace into 的用法
  • mysql Load Data InFile 的用法
  • MySQL show命令的用法
  • sql server中ISNULL函数与Mysql中IFNULL函数的用法
  • mySQL中replace的用法
  • PHP MySQL Order By 关键词的用法
  • mysql双向加密解密方式用法详解
  • MySQL中replace into语句的用法详解
  • mysql中模糊查询的四种用法介绍
  • java将类序列化并存储到mysql(使用hibernate)
  • MySQL存储引擎 MySQL Maria
  • mysql 存储过程实例和基本语法
  • MYSQL存储过程里代返回值的存储过程怎么写
  • MySQL存储引擎 Spider For MySQL
  • MySQL存储引擎 MyISAM
  • 更改Mysql数据库存储位置的具体步骤
  • MySQL存储引擎 Q4M
  • MySQL5创建存储过程的示例
  • MySQL 存储引擎 XtraDB
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • mysql安装过程中的错误
  • linux上装mysql过程中有错误
  • mysql 精简过程(删除一些文件)
  • Mysql存储过程和函数区别介绍
  • MySQL 存储过程中执行动态SQL语句的方法
  • mysql 存储过程输入输出参数示例
  • mysql 查询数据库中的存储过程与函数的语句
  • 装了red hat linux,安装过程中选了apache和mysql的安装
  • MySQL DNS的使用过程详细分析
  • mysql存储过程实例
  • jdbc调用mysql存储过程实现代码
  • mysql 导入导出数据库以及函数、存储过程的介绍
  • MySQL存储过程相互调用并获得错误码示例
  • MySQL 有输入输出参数的存储过程实例
  • mysql心得分享:存储过程
  • 我装了linux后,如果知道我机器里装了些什么软件,如php,mysql之类?我在安装过程中看到linux的确把这些安装到了我机器里,但我如何看,
  • mysql 让一个存储过程定时作业的代码
  • 基于mysql事务、视图、存储过程、触发器的应用分析
  • mysql存储过程中使用游标的实例
  • mysql多次调用存储过程的问题
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL Workbench的下载安装与使用教程


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3