`

几个简单的mysql存储过程

 
阅读更多
MySQL存储过程问题 以前没用过MySQL存储过程,第一次写有很多的不习惯,总结如下:

下面是一个最简单的MySQL存储过程,实现两个数相加

?delimiter $$
create procedure proc_add(in a int,in 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;
end$$
delimiter ;
需要注意的是

1. declare语句只能放在存储过程的开始位置,放在后面就会报错
2. if 语句的后面必须有then,但是不需要begin,在if结束时需要end if
3. 判断是否为NULL倒是和MSSQL一样都有IS NULL
4. delimiter是定界符的意思在结束的end后面要添加定界符
5. end if之后必须跟分号,否则语法错误

下面是一个较常见的场景,判断表中某列是否存在某值,如果存在执行某操作

?delimiter $$
create procedure proc_add_book(in $bookName varchar(200),in $price float)
begin
    declare $existsFlag int default 0;
    select bookId into $existsFlag from book where bookName = $bookName limit 1;
    if bookId > 0 then
    #if not exists (select * from book where bookNumber = $bookName) then
        insert into book(bookNumber,price) values($bookName,$price);
    end if;
end$$
delimiter ;
需要注意的是不能用if exists;exists可以在where后面或者在create object是使用,但是在if语句中不可以使用,只能用变通的方法。

while语句也需要注意,下面是一个while的简单应用:

?delimiter $$
create procedure proc_add_books_looply(in $bookName varchar(200),in $price float,in $insertTimes INT)
begin
    while $insertTimes>0 do
    insert into book (bookName,price) values($bookName,$price);
    end while;
end$$
delimiter ;
可以看到while后面跟条件,条件后面要跟一个do,在while循环体结束之后需要end while并以分号结束。

以上是一些简单的总结,希望有用。
转载自玉开的博客博客园

分享到:
评论

相关推荐

    MySQL存储过程学习

    创建MySQL存储过程通常涉及以下几个步骤: 1. 使用`CREATE PROCEDURE`语句定义存储过程的名称、输入/输出参数以及包含的SQL语句。 2. 在存储过程中,可以使用流程控制语句如`IF...ELSE`、`CASE`、`WHILE`和`LOOP`来...

    MySQL存储过程编程教程.pdf

    MySQL存储过程编程是数据库应用开发中的一个重要环节,它可以帮助开发者将一系列的数据库操作封装起来,以提高程序的可维护性和运行效率。在MySQL 5.0及以上版本中,存储过程、函数和触发器的支持为数据库提供了更...

    MySQL存储过程系统学习资料

    MySQL存储过程是数据库管理系统中的一个重要概念,它是一组为了完成特定功能的SQL语句集,经编译后存储在MySQL服务器中,用户可以调用这个预编译的语句集来执行任务,而不是每次需要时都重新编写相同的SQL代码。...

    MySQL存储过程学习资料

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预定义一组SQL语句,并将其封装成一个可重复使用的单元。这个单元可以包含多种SQL操作,如SELECT、INSERT、UPDATE、DELETE等,以及流程控制语句,如IF-...

    mySQL存储过程调用

    在PHP中调用MySQL存储过程,通常涉及到以下几个关键步骤: #### 1. 建立数据库连接 在PHP中,首先需要建立与MySQL数据库的连接。例如,在给定的代码片段中,通过`mysql_connect()`函数建立连接,并通过`mysql_...

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

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

    mysql创建存储过程

    一旦创建,就可以通过简单的调用来执行存储过程,而无需发送多个独立的SQL命令。 存储程序对于以下场景非常有用: - 当需要在不同的平台上运行多个客户端应用程序,并且这些应用程序需要执行相同的数据库操作时。 -...

    mysql触发器+存储过程

    文件“MySQL存储过程.pdf”和“OReilly.MySQL.Stored.Procedure.Programming.rar”可能会提供关于如何创建、调用和管理MySQL存储过程的详细指南,而“MySQL触发器.rar”则可能包含触发器的创建、使用和优化方面的...

    Mysql存储过程常用语句模板(含变量,if,三种循环等等)

    ### MySQL存储过程常用语句详解 #### 一、概述 MySQL 存储过程是一种预编译的 SQL 脚本,它可以包含复杂的流程控制逻辑,如条件判断、循环等,并可接受输入参数、返回单个或多个结果集以及输出参数。通过使用存储...

    mysql存储过程动态创建多列

    本文将深入探讨如何利用MySQL存储过程动态创建多列,这是一个高级功能,尤其适用于需要根据运行时变量或条件动态修改表结构的情况。 ### MySQL存储过程动态创建多列 #### 基本概念 在MySQL中,动态地添加列到一个...

    Mysql手册20-存储过程和函数

    MySQL存储过程和函数是数据库编程的重要组成部分,它们提供了在数据库服务器上执行特定任务的能力。本部分详细介绍了存储程序和函数的各个方面,包括它们的创建、语法、权限控制以及与性能优化相关的概念。 首先,...

    MySQL存储过程和触发器

    存储过程有以下几个显著优点: 1. **性能提升**:存储过程在服务器端执行,一旦编译后,其执行速度快,因为其代码驻留在服务器内存中,减少了网络流量和多次解析的时间。 2. **安全控制**:存储过程允许数据库管理...

    mysql 存储过程应用(代码详解)

    ### MySQL存储过程应用详解 #### 一、存储过程概述 在MySQL中,存储过程是一种预编译好的SQL脚本,可以包含复杂的逻辑控制语句、循环结构以及事务处理等功能。通过存储过程,开发者可以在数据库服务器端执行一系列...

    MySql存储过程和函数

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

    MySQL 5.0存储过程

    MySQL 5.0版本还引入了几个新特性,比如支持嵌套存储过程、游标和事务控制。嵌套存储过程允许在一个过程中调用另一个过程,增加了代码的模块化和复用性。游标则允许在过程内部逐行处理结果集,这对于迭代操作非常...

    MySQL存储过程实例教程详解.docx

    MySQL存储过程是数据库管理系统提供的一种高级程序设计语言,允许用户在数据库中封装一系列复杂的操作,以便重复使用。在MySQL 5.0及后续版本中,存储过程被引入,极大地提升了数据库管理和应用程序的效率。本教程将...

    SQL存储过程实例.doc

    接下来,我们看几个关于SQL查询的实例,这些实例涉及到了关系数据库中的联接、条件过滤和时间区间查询: 1. 查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的信息。这需要使用`JOIN`操作连接`...

    【数据库作业14】第五章: 数据库完整性 习题 + 存储过程

    本题主要涉及了几个关键的数据库操作,包括统计分析、存储过程的编写与执行,以及数据转换。 首先,针对(1)统计离散数学成绩分布的问题,创建了一个名为SCC的表来存储各分数段的人数。通过插入语句初始化了表结构...

Global site tag (gtag.js) - Google Analytics