MySQL存储过程调试

更新时间:2022-09-15 16:00:09 阅读: 评论:0

散打刷图加点-无常


2022年9月15日发
(作者:菜花节)

存储过程是在数据库服务器中执行的程序何以笙箫默 歌曲,它们通常使用数据库语言如PL/SQL或ANSI SQL:2003 SQL/PSM编写(有些数据库还支持Java编写存储过程,但我这里不对其进行分析)掠的组词,目前市面上也有大量的学习编写存储过程的书籍,笔者推荐阅读Guy Harrison的《MySQL存储过程编程》好看的qq昵称,以及Jonathan Gennick 和Tom Luers合著的《21天自学PL/SQL》测孕纸什么时候用最准,为什么要编写存储过程呢中央台元宵晚会节目单,归纳起来大概有三方面的原因: 1、正在实现的逻辑可能是数据库逻辑河东狮吼2经典台词,因此使用数据库语言比使用常规编程语言如Java更容易解决问题; 2、存储过程比Java执行速度要快得多兰草阅读答案,并且可以多由数据库多次调用; 3、存储过程更安全。无论选择编写存储过程的原因是什么陈情表原文及翻译,现在的问题是该如何进行问题调试邪菩萨。

行不通的办法



在存储过程中调试SQL:假设你的存储过程的主要逻辑是DDL和DML操作,这个方法才能工作,换句话说就是只有查询、插入等语句,同时假设其它存储过程主要承担支持数据库操作,在多数情况下这个假设是成立的,毕竟如果存储过程不操作数据库穆斯林网站,你也多半不会为此专门编写存储过程了有关运动会的作文。



毫无疑问,无论存储过程中包括了多少非SQL代码国庆小报图片,你都需要对SQL本身进行验证计算机维护,特别是因为这一级别的测试相对要简单些恒大亚冠赛程,只需要启动数据库命令行工具或查询GUI浏览器,将SQL语句粘贴进去执行一下就知道是否正确没有记叙文范文,当然怎样可以缓解痛经,这已经超出了简单的语法正确性检查,你必须亲自验证其语法的正确性。



但在某些情况下并是想象中那么简单,原因有两个非主流妩媚头像。首先,你的SQL代码可以(通常都是“会”)依赖存储过程定义的和/或操作的变量和参数,如果你有一条SELECT语句车队队长职责,它将它的结果存储到一个变量中安全生产资料,后面的SQL语句再来使用该变量人的性格,那么这种粘贴到命令行的测试方法可能就行不通了整天的近义词。这个时候,你不得的插入一条或多条语句,执行它们lols6天赋,也许还需要创建临时变量托福机经预测,并且在真正测试的时候可能还要修改SQL,这种情况会逐渐发生马路边捡到一分钱,但你可以达到某个点,不用再从头开始测试了。



使用这种方法的第二个问题是通常情况下,存储过程的逻辑是放在过程的程序代码中的而不是SQL语句中的,存储过程常常用于实例化业务逻辑好听的男生网名,通常是通过存储过程嵌入到代码流中的七年级上册英语试卷,在这种情况下只是对SQL语句进行一下简单的替补测试月初工作计划,而不是真正的测试存储过程心是莲花开。



在存储过程中插入Print语句



另一个方法是在你的存储过程中放置大量的Print语句,这种做法在实际中非常有用,特别是在早期开发阶段,每个数据库都有其自己的处理打印语句的方法,例如,当你使用MySQL concat( )调用构建一个字

符串输出时,你必须小心空值图像记忆,它将你的整个字符串转为空值,象下面这样的代码就很危险:



lect someColumn from someTable into myVar where.

concat('better hope myVar is not null

入到临时表中的日志消息都插入到MyISAM表了,这样维修电工基础知识,系统就记录了所有的信息什么是猫眼石,但只有在需要的时候才需要用到干什么最挣钱。



一个重要的值得注意的事情是要为永久性日志表选择MyISAM引擎心有余悸,记住,通常是事情变得糟糕的时候才会向这个表写入数据英语小故事,这常常会导致当前的事务回滚冰箱牌子排行榜,MyISAM引擎不是事务型引擎,这意味着即使一个事务回滚了驾照试题,插入到日志表中的日志仍然保留下来了,这正是期望的行为。



准则



在包中定义了4个存储过程我有一所大房子,其中两个用于创建将要用到的表脑溢血的症状,一个执行临时日志记录,最后一个将日志消息拷贝到永久性表中。



第一个存储过程创建临时表和永久性表三句半大全,注意使用的引擎类型以便区分这两个表的类型,临时日志表只包括一个列msg,永久性表添加了自动时间戳和thingID列元曲,假设在创建、破坏、修改某些对象期间写入了日志雪中送炭的反义词,并且那些对象有唯一的标识符园丁集,在我的视频点播空间中,它可能是流向客户机顶盒的电影的标识符。



Create Procedure tupLogging()

BEGIN



create temporary table if not exists tmplog (msg varchar(512)) engine = memory;



create table if not exists log (ts timestamp default current_timestamp光盘行动图片, thingID bigint,



msg varchar(512)) engine = myisam;



END;



第二个存储过程只创建临时日志表,我们看到在我们需要插入数据时临时表不存在张幼仪,此时我们可以使用一个存储过程来重新创建。



Create Procedure tupTmpLog()

BEGIN



create temporary table if not exists tmplog (msg varchar(512)) engine = memory;



END;



第三个存储过程是执行次数最多的最新超薄笔记本,它真正用于记录日志台阶课件,一个消息参数被写到临时表中劳动合同书 电子版,如果临时表不存在,这里提供了一个继续创建临时表的处理程序字数统计。

日志消息插入到tmplog表中,因为表在内存中,实际上它是一个非常自由的操作,这个操作的成本非常低黄帝简介,因此开发人员可以很详细地使用日志记录绅士的意思,不用再为是否要记录什么或不记录什么烦恼了。



通常情况下不会发现什么问题父爱的作文,存储过程没有做任何事情梦中新娘,临时表也仅仅在连接时存在,在典型的J2EE使用模式中团聚的近义词,当一个外部请求抵达系统中高中数学知识点总结,首先从连接池取出一个连接太空授课视频,然后又返回到连接池剐刑,当连接返回到连接池时昨日帝王篇完整版,临时表就被删除了,代码并未作出删除日志的任何操作,以这种方式系统几乎没有什么性能开销。



当存储过程检测到故障时contextbg dll,它会从临时内存表中向永久性MyISAM表中插入记录朋友聚会祝酒词,因此它将所有写入到临时表中的日志消息都插入到MyISAM表了位置英文,这样2017年4月里番,系统就记录了所有的信息台湾五都,但只有在需要的时候才需要用到being的用法。





冲刺期末-招行信用卡分期还款


本文发布于:2022-09-15 16:00:09,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/82/166893.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:动态代理
下一篇:完整版ZW3
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图