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

Mysql 之存储过程篇

阅读更多

(附件中含此次内容的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中的分页存储过程及其代码调用方法。 首先,理解分页的基本概念。在网页或应用程序中,我们通常会看到“上一页”、“下一页”这样的导航,这就是分页的表现形式。分页查询通过设置每页显示...

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

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

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

    MySQL存储过程是数据库中一种非常实用的功能,它允许开发者封装一系列SQL语句成一个可重复使用的单元,便于管理和执行复杂的数据库操作。本篇文章将详细探讨如何在MySQL中创建存储过程、调用存储过程以及声明和赋值...

    mybatis调用mysql存储过程

    通过以上步骤,你已经掌握了如何在MyBatis中调用MySQL存储过程的基本方法。在实际开发中,这将极大地提升你的数据库操作效率,使你能够更好地管理和处理复杂的业务逻辑。在后续的实践中,你可以尝试结合具体业务场景...

    mysql存储过程通用分页

    本篇文章将深入探讨MySQL存储过程在实现通用分页中的应用。 首先,让我们理解什么是分页。分页是数据库查询结果的一种展示方式,它将大量的数据分成若干个小部分,每次只显示一部分,这样用户可以逐页浏览,避免一...

    Java调用数据库存储过程[mysql测试通过]

    以下是一个简单的Java调用MySQL存储过程的示例: ```java import java.sql.*; public class TestJavaProcedure { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb"; ...

    mysql存储过程简单应用编写

    在本篇总结文档中,我们将探讨MySQL存储过程的简单应用,包括循环结构、创建临时表、删除数据、分页查询以及动态存储过程的编写。 首先,让我们了解一下什么是存储过程。存储过程是一组为了完成特定功能的SQL语句集...

    MySQL 存储过程

    ### MySQL存储过程详解 #### 一、MySQL存储过程概述 MySQL 存储过程是一种预编译的 SQL 代码块,可以包含复杂的逻辑控制结构。它能够接收输入参数、设置输出...希望本篇文章能帮助读者更好地理解和应用MySQL存储过程。

    mysql存储过程

    本篇文章将深入探讨MySQL存储过程的基础知识、创建与调用方法,以及实际应用中的最佳实践。 一、存储过程的概念与优点 存储过程是由一个或多个SQL语句组成的代码块,存储在数据库服务器中,可以被多次调用执行。它...

    MySql的存储过程学习小结 附pdf文档下载

    在熟悉其他数据库系统(如MS SQL SERVER)的背景下,了解MySQL存储过程的差异和特点是非常有益的。例如,MS SQL SERVER中的存储过程可能支持更复杂的T-SQL语法,而MySQL的存储过程则更侧重于SQL标准的实现。理解这些...

    IBatis查删改查与调用存储过程 mysql数据库

    通过这篇文章,读者可以了解到如何在Java项目中使用IBatis进行数据库操作,并掌握调用MySQL存储过程的方法。作者很可能会提供详细的步骤、示例代码和实战案例,帮助读者更好地理解和应用这些技术。由于没有具体的...

    MySql存储过程和函数

    MySQL存储过程和函数是数据库管理中的重要组成部分,它们在数据处理和业务逻辑中扮演着核心角色。本篇文章将深入探讨这两个概念,以及它们在MySQL环境中的应用和差异。 首先,让我们了解一下存储过程。存储过程是一...

    [MySQL] 存储过程错误异常处理例子

    总结来说,`DECLARE EXIT HANDLER FOR SQLEXCEPTION`是MySQL存储过程中处理错误和异常的关键工具。它使得我们能够优雅地处理可能出现的问题,确保即使在异常情况下,程序也能按照预定的方式进行操作,从而提升整个...

    mysql存储过程之if语句用法实例详解

    本篇文章将深入探讨MySQL存储过程中的`IF`语句及其相关用法。 首先,`IF`语句的基本语法如下: ```sql IF expression THEN statements; END IF; ``` 在这里,`expression`是一个布尔表达式,当其计算结果为`TRUE...

    MySQL存储过程

    本篇文章将深入探讨MySQL存储过程的相关知识点。 1. **存储过程的定义与创建** - 存储过程是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,当需要执行该功能时,只需要调用存储过程即可。 - 创建...

    mysql存储过程之错误处理实例详解

    MySQL存储过程中的错误处理是确保程序稳定性和可靠性的重要部分。在存储过程中,错误处理允许开发者预定义当特定错误出现时的响应方式,从而避免程序意外中断或者数据损坏。本篇文章将详细阐述如何在MySQL中进行存储...

    存储过程写九九乘法表

    本篇文章将详细介绍如何利用存储过程来实现九九乘法表的生成,这种方法非常适合初学者学习。 #### 存储过程的概念 存储过程是存储在服务器上的预先编写的SQL语句集合,它可以在客户端或应用程序请求时被调用执行。...

Global site tag (gtag.js) - Google Analytics