{"id":456,"date":"2009-08-01T18:16:26","date_gmt":"2009-08-01T16:16:26","guid":{"rendered":"https:\/\/bob-team.de\/wordpress\/?p=456"},"modified":"2009-08-03T15:26:26","modified_gmt":"2009-08-03T13:26:26","slug":"mysql-debugging","status":"publish","type":"post","link":"https:\/\/bob-team.de\/wordpress\/2009\/08\/01\/mysql-debugging\/","title":{"rendered":"MySQL Debugging"},"content":{"rendered":"<p>Bei der Programmierung von gespeicherte Routinen f\u00fcr den MySQL vermisst man ein \u00c4quivalent zum Oracle Package &#8222;dbms_output&#8220;. Wir haben uns mit folgender L\u00f6sung beholfen.<br \/>\n<!--more--><br \/>\nIn einer zus\u00e4tzlichen Datenbank &#8222;dbmc&#8220; wird eine Tabelle &#8222;debug_output&#8220; angelegt.<\/p>\n<p>[code lang=&#8220;sql&#8220;]CREATE DATABASE dbmc;<\/p>\n<p>DROP TABLE IF EXISTS `dbmc`.`debug_output`;<br \/>\nCREATE TABLE `dbmc`.`debug_output` (<br \/>\n  `proc_id` varchar(100) default NULL,<br \/>\n  `debug_output` text,<br \/>\n  `line_id` int(11) NOT NULL auto_increment,<br \/>\n  PRIMARY KEY  (`line_id`)<br \/>\n);[\/code]<\/p>\n<p>Die drei Prozeduren &#8222;debug_on&#8220;, &#8222;debug_insert&#8220; und &#8222;debug_show&#8220; erm\u00f6glichen uns den Zugriff auf die Debugging-Informationen.<\/p>\n<p>[code lang=&#8220;sql&#8220;]DELIMITER $$<\/p>\n<p>DROP PROCEDURE IF EXISTS `dbmc`.`debug_on` $$<br \/>\nCREATE PROCEDURE `dbmc`.`debug_on`(in $proc_id varchar(100))<br \/>\nbegin<br \/>\n  declare $committer int default -1;<br \/>\n  select count(proc_id) into $committer from dbmc.debug_output<br \/>\n  where proc_id = $proc_id;<br \/>\n  if $committer > 0 then<br \/>\n    delete from dbmc.debug_output where proc_id = $proc_id;<br \/>\n  end if;<br \/>\n  insert into dbmc.debug_output (proc_id,debug_output)<br \/>\n  values ($proc_id, concat(&#8218;debug started: &#8218;, now()));<br \/>\nend $$<\/p>\n<p>DROP PROCEDURE IF EXISTS `dbmc`.`debug_insert` $$<br \/>\nCREATE PROCEDURE `dbmc`.`debug_insert`(in $proc_id varchar(100),in $debug text)<br \/>\nbegin<br \/>\n  declare $committer int default -1;<br \/>\n  select count(proc_id) into $committer from dbmc.debug_output<br \/>\n  where proc_id = $proc_id;<br \/>\n  if $committer > 0 then<br \/>\n    insert into dbmc.debug_output (proc_id,debug_output)<br \/>\n    values ($proc_id, $debug);<br \/>\n  end if;<br \/>\nend $$<\/p>\n<p>DROP PROCEDURE IF EXISTS `dbmc`.`debug_show` $$<br \/>\nCREATE PROCEDURE `dbmc`.`debug_show`(in $proc_id varchar(100))<br \/>\nbegin<br \/>\n  select debug_output from dbmc.debug_output where proc_id = $proc_id order by line_id;<br \/>\nend $$<\/p>\n<p>DELIMITER ;[\/code]<\/p>\n<p>Bei der Anwendung schaltet man mit &#8222;dbmc.debug_on(&#8218;ABC&#8216;)&#8220; die Protokollierung ein. W\u00e4hrend der Ausf\u00fchrung erfasst man die Informtionen mit &#8222;dbmc.debug_insert(&#8218;ABC&#8216;, &#8218;hallo welt!&#8216;)&#8220;. Bis zu einem Neustart der Anwendung kann man die erfassten Zeilen mit &#8222;dbmc.debug_show(&#8218;ABC&#8216;)&#8220; abrufen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei der Programmierung von gespeicherte Routinen f\u00fcr den MySQL vermisst man ein \u00c4quivalent zum Oracle Package &#8222;dbms_output&#8220;. Wir haben uns mit folgender L\u00f6sung beholfen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-456","post","type-post","status-publish","format-standard","hentry","category-uncategorized","entry"],"_links":{"self":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/comments?post=456"}],"version-history":[{"count":7,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/456\/revisions"}],"predecessor-version":[{"id":463,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/456\/revisions\/463"}],"wp:attachment":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/media?parent=456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/categories?post=456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/tags?post=456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}