mysql心得分享:存储过程

 更新时间:2014年07月15日 08:40:51   投稿:hebedich  
MySQL 5.0以后的版本开始支持存储过程,存储过程具有一致性、高效性、安全性和体系结构等特点,本文主要来分享下本人关于存储过程的一些心得体会。
use test;

drop table if exists t8;
CREATE TABLE t8(s1 INT,PRIMARY KEY(s1));

drop procedure if exists handlerdemo;

DELIMITER $$
CREATE PROCEDURE handlerdemo()
BEGIN
declare xx int default 4;
DECLARE oh_no condition for sqlstate '23000';
#DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @X2=1;
declare exit handler for oh_no set @info='违反主键约束';
SET @X=1;
INSERT INTO t8 VALUES(1);
SET @X=2;
INSERT INTO t8 VALUES(1);
SET @X=3;
END

调用存储过程

/* 调用存储过程*/
CALL handlerdemo();

/* 查看调用存储过程结果*/
SELECT @X,@info;

心得体会:

1、语句结束符

也许mysql是将存储过程、自定义函数看作一条语句的,因此,存储过程里多条语句用“;”隔开,为了避免冲突,就要用delimiter 重新定义结束符。

一般可以在存储过程开始前,定义新的结束符,如

delimiter //

存储过程书写完毕以后,再恢复定义:delimiter ;

但也可以在存储过程开始前,这样写 delimiter $$,但存储过程后不可以再写别的语句了。如上面的例子

2、变量

mysql的变量,跟SQL SERVER一样,形如 @X ,但无需声明,直接使用。

而在存储过程里面,变量无须用 @,但要声明。并且声明要放在存储过程的头部(?),如本例,否则报错。真奇怪啊,一方面,有时候变量无须声明就可以使用,另一方面,有时候又要限定声明位置,令人无所适从,似乎随便了点。

存储过程内部的变量,作用范围仅限于存储过程。但那些带@的变量,却仿佛可以跨越会话和连接,看上去是全局变量?如上面的例子。

3、条件和处理

定义条件,是为了给处理调用。如上面的例子:

DECLARE oh_no condition for sqlstate '23000';
#DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @X2=1;
declare exit handler for oh_no set @info='违反主键约束';

相关文章

  • MySQL 数据库锁的实现

    MySQL 数据库锁的实现

    本文主要介绍了MySQL 数据库锁的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • win10安装zip版MySQL8.0.19的教程详解

    win10安装zip版MySQL8.0.19的教程详解

    这篇文章主要介绍了win10安装zip版MySQL8.0.19的教程详细,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • MySQL Redo与Undo日志详细解析

    MySQL Redo与Undo日志详细解析

    这篇文章主要介绍了MySQL Redo与Undo日志详细解析,Redo日志是物理日志,记录的是页面的变化,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • 如何更改MySQL数据库的编码为utf8mb4

    如何更改MySQL数据库的编码为utf8mb4

    utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。 这篇文章给大家介绍了更改MySQL数据库的编码为utf8mb4的相关知识,感兴趣的朋友一起看看吧
    2020-02-02
  • MySQL安装常见报错处理方法总结大全

    MySQL安装常见报错处理方法总结大全

    MySQL数据库在安装或卸载的过程中,常常会出现一些错误,这是件让我们头疼的事,下面这篇文章主要给大家介绍了关于MySQL安装常见报错处理方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 利用mysql事务特性实现并发安全的自增ID示例

    利用mysql事务特性实现并发安全的自增ID示例

    项目中经常会用到自增id,比如uid,下面为大家介绍下利用mysql事务特性实现并发安全的自增ID,感兴趣的朋友可以参考下
    2013-11-11
  • Mysql sql 如何对行数据求和

    Mysql sql 如何对行数据求和

    这篇文章主要介绍了Mysql使用sql实现对行数据求和问题,具有很好的参考价值,希望对大家有所帮助。
    2023-05-05
  • You must SET PASSWORD before executing this statement的解决方法

    You must SET PASSWORD before execut

    今天在MySql5.6操作时报错:You must SET PASSWORD before executing this statement解决方法,需要的朋友可以参考下
    2013-06-06
  • mysql中整数数据类型tinyint详解

    mysql中整数数据类型tinyint详解

    大家好,本篇文章主要讲的是mysql中整数数据类型tinyint详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • mysql5.7.21安装配置教程

    mysql5.7.21安装配置教程

    这篇文章主要为大家详细介绍了mysql5.7.21安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02

最新评论