`
刘宗才
  • 浏览: 34088 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL:MySQL 创建存储过程

阅读更多

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能。存储过程的优点有一箩筐。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。 一、MySQL 创建存储过程
“pr_add” 是个简单的 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 来替代。
call pr_add(10, null);
</htm
分享到:
评论

相关推荐

    MySQL数据库:存储过程的创建1.pptx

    创建存储过程1 课程目标 1)了解 ——存储过程的优点; 2)理解 —— 存储过程的概念; 3)掌握 —— 存储过程的创建方法; 存储过程优点 使用存储过程的优点有: (1)存储过程在服务器端运行,执行速度快。 (2)...

    MySQL实现创建存储过程并循环添加记录的方法

    创建存储过程并循环添加记录是数据库管理中的常见任务,尤其是在需要批量插入数据时。以下将详细解释如何在MySQL中实现这一功能。 首先,我们需要了解存储过程的基本创建方法。在MySQL中,我们使用`CREATE ...

    mysql存储过程教程

    在MySQL中,可以使用`CREATE PROCEDURE`语句来创建存储过程。例如,以下是一个简单的存储过程,用于计算两个数字的和: ```sql CREATE PROCEDURE addNumbers(IN num1 INT, IN num2 INT, OUT result INT) BEGIN SET...

    MySQL创建存储过程批量插入10万条数据

    MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...

    MySQL内核:InnoDB存储引擎 卷1.pdf.zip

    《MySQL内核:InnoDB存储引擎 卷1》是一本深度探讨MySQL数据库系统核心部分——InnoDB存储引擎的专业书籍。这本书以超高清的PDF格式呈现,包含详细的书签,便于读者快速定位和查阅相关内容。InnoDB作为MySQL中最常用...

    MySQL分区表自动创建及删除存储过程

    "使用说明.txt"文件应该是关于如何部署和使用这些存储过程和事件的详细指南,包括如何启用事件调度器,如何调用存储过程来创建和删除分区,以及如何监控和调整这些自动化操作的建议。 总的来说,这个压缩包提供了...

    linux下mysql的操作与存储过程

    在提供的文件中,`创建存储过程.txt`可能包含了一个或多个存储过程的创建示例,可以将其内容复制到MySQL客户端执行。`table.txt`可能是描述数据库表结构的文件,通常包含`CREATE TABLE`语句,用于创建数据表。 四、...

    mysql经典教程+mysql存储过程讲解

    在“MySQL5.0存储过程.pdf”中,你将学到如何创建、调用和管理存储过程,以及它们在实际应用中的用法。 存储过程的创建涉及定义输入参数、输出参数和局部变量。你可以编写一系列的SELECT、INSERT、UPDATE、DELETE等...

    在MySQL中创建带有IN和OUT参数的存储过程的方法

    在MySQL 入门教程中,我们能够看到很多关于如何创建储存过程 和如何利用 IN 和 OUT 参数调用存储过程的示例。这些示例都很简单,能够很好的帮助你理解 MySQL 中创建带参数存储过程的语法。这些示例已在 MySQL 5.5 中...

    MySQL实验报告5(存储过程与函数)(1)(1).pdf

    根据提供的文件内容,本篇实验报告主要围绕MySQL数据库中存储过程和函数的应用,涵盖了创建存储过程、函数、游标以及异常处理等高级特性。下面将详细解析报告中的每个知识点。 1. 创建存储过程 存储过程是一种在...

    使用MYSQL5创建存储过程procedure

    在本主题中,我们将深入探讨如何使用MySQL5创建存储过程,并结合PL/SQL语言来实现分表功能。 首先,让我们了解存储过程的基本语法。在MySQL中,创建存储过程通常包含以下部分: 1. `CREATE PROCEDURE` 关键字,...

    MySQL SQL高级特性-存储过程-触发器-事务

    创建存储过程时,需要修改MySQL的默认命令结束符,否则会因为分号结束导致存储过程的编译失败。使用delimiter关键字可以指定新的结束符,创建完毕后应恢复默认的结束符。 调用存储过程时使用call语句,同时可以指定...

    玩转MySQL存储过程

    - **语法差异**:两者在创建存储过程的语法上存在细微差别。 - **功能差异**:Oracle的存储过程支持更高级的功能,例如包和复杂的异常处理。 - **性能差异**:由于数据库引擎的不同,两者在执行存储过程时的性能也会...

    MySQL存储过程经典教程

    - **OUT参数**:过程执行后传出的值,调用时需要声明变量接收。 - **INOUT参数**:既能作为输入也能作为输出。 6. **流程控制结构** 存储过程中支持`IF...ELSE`、`CASE`、`WHILE`、`FOR`循环等控制结构,可以...

    MySQL存储过程综述及如何使用Navicat创建存储过程

    一、什么是MySQL存储过程?   在大型项目中,有时候需要重复执行能够完成特定功能的SQL语句集,而MySQL为我们提供了存储过程的概念,存储过程是...三、Navicat创建一个存储过程   (1):先选择某个数据库中的函

    Java实现调用MySQL存储过程详解

    你可以使用MySQL命令行客户端或者可视化工具(如MySQL Workbench)来查看和创建存储过程。 要从Java程序中调用这些存储过程,你需要遵循以下步骤: 1. **导入必要的库**:在Java源文件中,导入JDBC相关的库,通常...

    mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法

    本篇文章将详细探讨如何在MySQL中创建存储过程、调用存储过程以及声明和赋值变量。 一、创建存储过程 创建存储过程的关键在于`CREATE PROCEDURE`语句。以下是一个创建名为`GetAllProducts`的存储过程的例子,它用于...

    MySQL5新特性之存储过程MySQL5新特性之存储过程

    1. **参数化**:MySQL5允许在创建存储过程时定义输入、输出和输入/输出参数。这使得存储过程可以像函数一样接受参数,并返回结果,增加了程序的复用性和灵活性。 2. **流程控制结构**:MySQL5引入了流程控制结构,...

    MySQL存储过程的异常处理方法

    首先,我们注意到在创建存储过程`myProc`时,使用了`delimiter $$`来改变MySQL客户端的语句分隔符,这是为了在存储过程中使用多个分号(;)而不会导致命令提前结束。存储过程的定义如下: ```sql CREATE PROCEDURE ...

Global site tag (gtag.js) - Google Analytics