mysql学习笔记:存储过程
技术百科
黄舟
发布时间:2017-02-15
浏览: 次 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 ;
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='违反主键约束';
以上就是以上就是的内容,更多相关内容请关注PHP中文网(www.)!的内容,更多相关内容请关注PHP中文网(www.)!
# 放在
# 相关内容
# 而在
# 自定义
# 要用
# 又要
# 报错
# mysql
# 主键
# 中文网
# 存储过程
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win11怎样安装网易云音乐_Win11安装网易云
- Win10如何卸载微软拼音输入法 Win10只保留
- Windows 10怎么隐藏特定更新补丁_Wind
- Win11怎么设置快速访问_Windows11文件
- 如何使用Golang实现聊天室消息存档_存储聊天记
- PHP主流架构如何处理会话管理_Session与C
- 如何在Golang中实现微服务服务拆分_Golan
- Win11怎么关闭系统透明度_Windows11个
- 如何在Golang中使用time处理时间_Gola
- Win11怎么修复系统文件_使用sfc命令修复Wi
- 如何在Golang中处理通道发送接收错误_防止阻塞
- 如何有效拦截拼接式恶意域名的垃圾信息
- c++的STL算法库find怎么用 在容器中查找指
- Win11怎么开启游戏模式_Win11优化游戏帧数
- 如何自定义Windows终端的默认配置文件?(Po
- Win10如何关闭安全中心所有通知 Win10禁用
- Win11开机自检怎么关闭_跳过Win11开机磁盘
- MAC如何安装Git版本控制工具_MAC开发环境配
- Mac如何查看电池健康百分比_Mac系统信息电源检
- Windows电脑如何进入安全模式?(多种按键方法
- 如何在Windows中创建新的用户账户?(标准与管
- Python字符串操作教程_切片拼接与格式化详解
- Python邮件系统自动化教程_批量发送解析与模板
- 如何使用Golang reflect检查方法数量_
- 如何在Golang中捕获结构体方法错误_Golan
- 如何用::实现单例模式_php静态方法与作用域操作
- c++怎么使用std::tuple存储多元组数据_
- 如何在Golang中实现邮件发送功能_Golang
- 如何在Golang中处理模块冲突_解决依赖版本不兼
- Python高性能计算项目教程_NumPyCyth
- php会话怎么开启_session_start函数
- 如何使用Golang捕获测试日志_Golang t
- Win11怎么关闭搜索历史_Win11清除设备上的
- Windows蓝屏错误0x0000002C怎么解决
- php串口通信波特率怎么选_根据硬件手册设置正确波
- php查询数据怎么分组_groupby分组查询配合
- Linux怎么查找死循环进程_Linux系统负载分
- Win11怎么关闭专注助手 Win11关闭免打扰模
- 如何在Golang中引入测试模块_Golang测试
- php485读数据时阻塞怎么办_php485非阻塞
- 如何使用正则表达式提取以编号开头、后跟多个注解的完
- php嵌入式需要什么环境_搭建php+linux嵌
- Win10系统怎么查看端口状态_Windows10
- php怎么捕获异常_trycatch结构处理运行时
- Win11如何隐藏桌面图标 Win11一键隐藏/显
- Win11怎么快速锁屏_Win11一键锁屏快捷键W
- Python日志系统设计与实现_高可观测性架构实战
- 本地php环境出现502错误_nginx或apac
- PyTorch DDP 多进程训练在 Kaggle
- Windows如何使用BitLocker To G

@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
QQ客服