mysql学习笔记:存储过程

网友投稿 624 2022-12-02

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()BEGINdeclare 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 ;

2、变量

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

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='违反主键约束';

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:CYQ.Data 轻量数据层之路 使用篇五曲 MProc 存储过程与SQL(十六)
下一篇:CYQ.Data 轻量数据层之路 强势V1.5 问世 支持winform下使用(十七)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~