(附件中含此次内容的ppt,转载请注明作者出处!)
为什么要使用存储过程 why?!
优点:
1、预编译,已优化,效率较高。避免了SQL语句在网络传输然后再解释的低效率,缓解网络带宽。
2、存储过程可以重复使用,减少开发人员的工作量。
3、业务逻辑封装性好,修改方便。
4、安全。可设定只有某此用户才具有对指定存储过程的使用权;也不会有SQL语句注入问题存在。
什么时候用存储过程 when?!
存储过程不仅仅适用于大型项目,对于中小型项目,使用存储过程也是非常有必要的。
当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;
当在一个事务的完成需要很复杂的商业逻辑时(比如,对多个数据的操作,对多个状态的判断更改等)要考虑;
还有就是比较复杂的统计和汇总也要考虑。
怎么来使用存储过程 how?!
一.创建存储过程
1.基本语法:
CREATE PROCEDURE pd_name(参数[in 参数 数据类型],[out 参数 数据类型],[inout 参数 数据类型])BEGIN.........
………End
例1.1:无参数的存储过程
create procedure pd_1()
begin
declare i int;
set i=0;
while i<5 do
insert into t_pro(name)values(i);
set i = i+1;
end while;
end
call pd_1();
例1.2:带有参数的存储过程
create procedure proc_name (in parameter int)
begin
declare variable varchar(20);
if parameter=1 then
set variable='MySQL';
else
set variable='JAVA';
end if;
insert into t_pro (name) values (variable);
end;
例1.3:带有参数的存储过程
create procedure pd_3(in a int,in b int,out c int)
begin
select a;
select b;
select c;
set c = a+b;
end
set @c = 0;
call pd_3(1,1,@c)
select @c;
在mysql的存储过程中不能使用return返回,但是函数可以。
例1.4:在存储过程中调用另一个存储过程
create procedure pro_a(in a int,in b int,out c int)
begin
set c = a+b;
end
create procedure pro_b()
begin
declare t int default 0;
call pro_a(1,2,t);
select t+4 as result;
end
注:存储过程中可以调用另一个存储过程或函数,但是不能在一个存储过程中删除另一个存储过程。
例1.5:在存储过程中调用另外一个函数
create function dd(a int,b int) returns int
begin
return a+b;
end
select dd(2,4);
create procedure pp()
begin
declare a int default 0;
--set a = dd(2,3);
select dd(2,4) into a;
select a;
end
存储过程和函数的区别:
1、函数只能通过return语句返回单个值或者表对象,而存储过程不允许执行return,但是通过out参数返回多个值
2、函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。
3、存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强
4、函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少
存储过程中的游标使用:
create procedure pro_cursor()
begin
declare a,b,c int;
declare cur cursor for select id from t_pro;--声明一个游标
declare continue handler for not found set b = 1;--声明游标事件
open cur;--打开游标
set b = 0;
set c = 0;
while b = 0 do
fetch cur into a;--将当前游标值赋给变量
if b = 0 then
set c = c + a;
end if;
end while;
close cur;--关闭游标
select c;
end
分享到:
相关推荐
本篇文章将深入探讨MySQL中的分页存储过程及其代码调用方法。 首先,理解分页的基本概念。在网页或应用程序中,我们通常会看到“上一页”、“下一页”这样的导航,这就是分页的表现形式。分页查询通过设置每页显示...
根据提供的文件内容,本篇实验报告主要围绕MySQL数据库中存储过程和函数的应用,涵盖了创建存储过程、函数、游标以及异常处理等高级特性。下面将详细解析报告中的每个知识点。 1. 创建存储过程 存储过程是一种在...
MySQL存储过程是数据库中一种非常实用的功能,它允许开发者封装一系列SQL语句成一个可重复使用的单元,便于管理和执行复杂的数据库操作。本篇文章将详细探讨如何在MySQL中创建存储过程、调用存储过程以及声明和赋值...
通过以上步骤,你已经掌握了如何在MyBatis中调用MySQL存储过程的基本方法。在实际开发中,这将极大地提升你的数据库操作效率,使你能够更好地管理和处理复杂的业务逻辑。在后续的实践中,你可以尝试结合具体业务场景...
本篇文章将深入探讨MySQL存储过程在实现通用分页中的应用。 首先,让我们理解什么是分页。分页是数据库查询结果的一种展示方式,它将大量的数据分成若干个小部分,每次只显示一部分,这样用户可以逐页浏览,避免一...
以下是一个简单的Java调用MySQL存储过程的示例: ```java import java.sql.*; public class TestJavaProcedure { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb"; ...
在本篇总结文档中,我们将探讨MySQL存储过程的简单应用,包括循环结构、创建临时表、删除数据、分页查询以及动态存储过程的编写。 首先,让我们了解一下什么是存储过程。存储过程是一组为了完成特定功能的SQL语句集...
### MySQL存储过程详解 #### 一、MySQL存储过程概述 MySQL 存储过程是一种预编译的 SQL 代码块,可以包含复杂的逻辑控制结构。它能够接收输入参数、设置输出...希望本篇文章能帮助读者更好地理解和应用MySQL存储过程。
本篇文章将深入探讨MySQL存储过程的基础知识、创建与调用方法,以及实际应用中的最佳实践。 一、存储过程的概念与优点 存储过程是由一个或多个SQL语句组成的代码块,存储在数据库服务器中,可以被多次调用执行。它...
在熟悉其他数据库系统(如MS SQL SERVER)的背景下,了解MySQL存储过程的差异和特点是非常有益的。例如,MS SQL SERVER中的存储过程可能支持更复杂的T-SQL语法,而MySQL的存储过程则更侧重于SQL标准的实现。理解这些...
通过这篇文章,读者可以了解到如何在Java项目中使用IBatis进行数据库操作,并掌握调用MySQL存储过程的方法。作者很可能会提供详细的步骤、示例代码和实战案例,帮助读者更好地理解和应用这些技术。由于没有具体的...
MySQL存储过程和函数是数据库管理中的重要组成部分,它们在数据处理和业务逻辑中扮演着核心角色。本篇文章将深入探讨这两个概念,以及它们在MySQL环境中的应用和差异。 首先,让我们了解一下存储过程。存储过程是一...
总结来说,`DECLARE EXIT HANDLER FOR SQLEXCEPTION`是MySQL存储过程中处理错误和异常的关键工具。它使得我们能够优雅地处理可能出现的问题,确保即使在异常情况下,程序也能按照预定的方式进行操作,从而提升整个...
本篇文章将深入探讨MySQL存储过程中的`IF`语句及其相关用法。 首先,`IF`语句的基本语法如下: ```sql IF expression THEN statements; END IF; ``` 在这里,`expression`是一个布尔表达式,当其计算结果为`TRUE...
本篇文章将深入探讨MySQL存储过程的相关知识点。 1. **存储过程的定义与创建** - 存储过程是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,当需要执行该功能时,只需要调用存储过程即可。 - 创建...
MySQL存储过程中的错误处理是确保程序稳定性和可靠性的重要部分。在存储过程中,错误处理允许开发者预定义当特定错误出现时的响应方式,从而避免程序意外中断或者数据损坏。本篇文章将详细阐述如何在MySQL中进行存储...
本篇文章将详细介绍如何利用存储过程来实现九九乘法表的生成,这种方法非常适合初学者学习。 #### 存储过程的概念 存储过程是存储在服务器上的预先编写的SQL语句集合,它可以在客户端或应用程序请求时被调用执行。...