加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql应用mysql心得分享:存储过程

发布时间:2020-12-12 01:12:42 所属栏目:MySql教程 来源:网络整理
导读:《Mysql应用mysql心得分享:存储过程》要点: 本文介绍了Mysql应用mysql心得分享:存储过程,希望对您有用。如果有疑问,可以联系我们。 use test;drop table if exists t8;CREATE TABLE t8(s1 INT,PRIMARY KEY(s1));drop procedure if exists handlerdemo;D

《Mysql应用mysql心得分享:存储过程》要点:
本文介绍了Mysql应用mysql心得分享:存储过程,希望对您有用。如果有疑问,可以联系我们。

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

调用存储过程MYSQL学习

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

心得体会:MYSQL学习

1、语句结束符MYSQL学习

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

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

delimiter //MYSQL学习

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

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

2、变量MYSQL学习

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

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

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

3、条件和处理MYSQL学习

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读