{"id":2847,"date":"2021-01-06T12:33:09","date_gmt":"2021-01-06T04:33:09","guid":{"rendered":"https:\/\/www.gbase8.cn\/?p=2847"},"modified":"2021-04-25T15:12:44","modified_gmt":"2021-04-25T07:12:44","slug":"gbase-8a%e5%ad%98%e5%82%a8%e8%bf%87%e7%a8%8b%e5%bc%82%e5%b8%b8%e5%a4%84%e7%90%86%e6%a8%a1%e5%9d%97%e8%af%ad%e6%b3%95%e4%bb%8b%e7%bb%8d%e5%92%8c%e4%bd%bf%e7%94%a8%e6%a0%b7%e4%be%8b","status":"publish","type":"post","link":"https:\/\/www.gbase8.cn\/en\/2847","title":{"rendered":"\u5357\u5927\u901a\u7528GBase 8a\u5b58\u50a8\u8fc7\u7a0b\u5f02\u5e38\u5904\u7406\u6a21\u5757\u8bed\u6cd5\u4ecb\u7ecd\u548c\u4f7f\u7528\u6837\u4f8b"},"content":{"rendered":"\n<p>GBase 8a\u6570\u636e\u5e93\u652f\u6301\u5b58\u50a8\u8fc7\u7a0b\u7684\u5f02\u5e38\u5904\u7406\uff0c\u901a\u8fc7handler\u6355\u83b7\u5f02\u5e38\uff0c\u901a\u8fc7get DIAGNOSTIC\u83b7\u5f97\u5f02\u5e38\u8be6\u7ec6\u4fe1\u606f\uff0c\u5e76\u63d0\u4f9bcontinue\u548cexit\u4e24\u79cd\u6d41\u7a0b\u65b9\u6848\u3002\u672c\u6587\u4ecb\u7ecdGBase 8a\u5f02\u5e38\u5904\u7406\u6709\u5173\u8bed\u6cd5\u548c\u6837\u4f8b\u3002<\/p>\n\n\n\n<p>\u96c6\u7fa4\u5404\u7ec4\u4ef6\u4ecb\u7ecd\uff0c\u8bf7\u53c2\u8003 <a href=\"https:\/\/www.gbase8.cn\/1402\">GBase 8a \u6838\u5fc3\u670d\u52a1\u7ec4\u4ef6\u529f\u80fd\u4ecb\u7ecd<\/a><\/p>\n\n\n\n<p>\u672c\u6587\u5bf9\u5e94\u7248\u672c\uff1a8.6.2Build43<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u76ee\u5f55\u5bfc\u822a<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a2b2c9587de9\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a2b2c9587de9\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E8%AF%AD%E6%B3%95\" >\u8bed\u6cd5<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E6%8D%95%E8%8E%B7%E5%BC%82%E5%B8%B8\" >\u6355\u83b7\u5f02\u5e38<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#handler_type\" >handler_type<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#condition_value\" >condition_value<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E8%8E%B7%E5%8F%96%E5%BC%82%E5%B8%B8%E4%BF%A1%E6%81%AF\" >\u83b7\u53d6\u5f02\u5e38\u4fe1\u606f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#statement_information_item\" >statement_information_item<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#condition_information_item\" >condition_information_item<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E5%AE%9A%E4%B9%89%E5%BC%82%E5%B8%B8%E6%9D%A1%E4%BB%B6%E4%BF%A1%E6%81%AF%E7%9A%84%E5%88%AB%E5%90%8D\" >\u5b9a\u4e49\u5f02\u5e38\u6761\u4ef6\u4fe1\u606f\u7684\u522b\u540d<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E8%AF%B4%E6%98%8E\" >\u8bf4\u660e<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E6%A0%B7%E4%BE%8B\" >\u6837\u4f8b<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E6%9C%80%E5%9F%BA%E6%9C%AC%E7%9A%84\" >\u6700\u57fa\u672c\u7684<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BC%82%E5%B8%B8%E6%9D%A1%E4%BB%B6%E4%BF%A1%E6%81%AF%E7%9A%84%E5%88%AB%E5%90%8D\" >\u81ea\u5b9a\u4e49\u5f02\u5e38\u6761\u4ef6\u4fe1\u606f\u7684\u522b\u540d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E8%8E%B7%E5%BE%97%E6%8A%A5%E9%94%99%E4%BF%A1%E6%81%AF\" >\u83b7\u5f97\u62a5\u9519\u4fe1\u606f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E6%B8%B8%E6%A0%87%E5%88%B0%E7%BB%93%E6%9E%9C%E9%9B%86%E6%9C%AB%E5%B0%BE%E7%9A%84NOT_FOUND\" >\u6e38\u6807\u5230\u7ed3\u679c\u96c6\u672b\u5c3e\u7684NOT FOUND<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E5%B5%8C%E5%A5%97BEGIN_END%E5%86%85%E5%B1%82declare%E7%9A%84%E5%A4%84%E7%90%86\" >\u5d4c\u5957BEGIN END\u5185\u5c42declare\u7684\u5904\u7406<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.gbase8.cn\/en\/2847\/#%E5%86%85%E5%B1%82%E5%B5%8C%E5%A5%97exit_handler%E7%9A%84%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C\" >\u5185\u5c42\u5d4c\u5957exit handler\u7684\u6267\u884c\u7ed3\u679c<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%AF%AD%E6%B3%95\"><\/span>\u8bed\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%8D%95%E8%8E%B7%E5%BC%82%E5%B8%B8\"><\/span>\u6355\u83b7\u5f02\u5e38<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>DECLARE handler_type HANDLER FOR condition_value&#91;,...] statement\nhandler_type:\n CONTINUE\n | EXIT\ncondition_value:\n SQLSTATE &#91;VALUE] sqlstate_value\n | condition_name\n | SQLWARNING\n | NOT FOUND\n | SQLEXCEPTION\n | gbase_error_code\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"handler_type\"><\/span>handler_type<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>CONTINUE\uff1a\u5728\u5904\u7406\u5668\u8bed\u53e5\u6267\u884c\u7ed3\u675f\u540e\uff0c\u5f53\u524d\u7684\u7a0b\u5e8f\u7ee7\u7eed\u6267\u884c\u4e0b\u4e00\u884c\u8bed\u53e5\u3002<\/p>\n\n\n\n<p>EXIT\uff1a\u5f53\u524d\u58f0\u660edeclare handler\u7684 BEGIN\u2026END \u590d\u5408\u8bed\u53e5\u7684\u6267\u884c\u88ab\u7ec8\u6b62\uff0c\u652f\u6301\u5185\u5185\u90e8\u5d4c\u5957\u7684\u5757\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"condition_value\"><\/span>condition_value<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>SQLSTATE [VALUE] sqlstate_value<br>SQL\u6267\u884c\u72b6\u6001\uff0c\u6bd4\u5982SQLSTATE '42S02'<\/p>\n\n\n\n<p>condition_name<br>\u9884\u5148\u8bbe\u7f6e\u7684\u6761\u4ef6\u540d\u5b57\uff0c\u7c7b\u4f3c\u81ea\u5b9a\u4e49\u7684\u522b\u540d\u3002\u8be6\u60c5\u770b\u672c\u6587\u4e13\u95e8\u4ecb\u7ecd\u7684\u7ae0\u8282\u3002<\/p>\n\n\n\n<p>SQLWARNING<br>\u544a\u8b66<\/p>\n\n\n\n<p>NOT FOUND<br>\u8fd9\u662f\u548c\u6e38\u6807\u4e0a\u4e0b\u6587\u76f8\u5173\u7684\uff0c\u7528\u4e8e\u63a7\u5236\u6e38\u6807\u5230\u8fbe\u6570\u636e\u96c6\u672b\u5c3e\u65f6\u53d1\u751f\u7684\u64cd\u4f5c\u3002\u5982\u679c\u6ca1\u6709\u66f4\u591a\u7684\u884c\u53ef\u7528\uff0c\u5219\u4f1a\u51fa\u73b0\u65e0\u6570\u636e\u6761\u4ef6\uff0cSQLSTATE\u503c\u4e3a\u201c02000\u201d\u3002\u8981\u68c0\u6d4b\u6b64\u6761\u4ef6\uff0c\u53ef\u4ee5\u4e3a\u5176\u6216\u672a\u627e\u5230\u6761\u4ef6\u8bbe\u7f6e\u5904\u7406\u7a0b\u5e8f\u3002<\/p>\n\n\n\n<p>SQLEXCEPTION<br>\u62a5\u9519<\/p>\n\n\n\n<p>gbase_error_code <br> \u7279\u5b9a\u7684\u9519\u8bef\u7801<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%8E%B7%E5%8F%96%E5%BC%82%E5%B8%B8%E4%BF%A1%E6%81%AF\"><\/span>\u83b7\u53d6\u5f02\u5e38\u4fe1\u606f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u901a\u8fc7 GET DIAGNOSTICS \u83b7\u5f97\u5f02\u5e38\u53d1\u751f\u65f6\u7684\u4fe1\u606f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET &#91;CURRENT | STACKED] DIAGNOSTICS\n{\n statement_information_item &#91;, statement_information_item] ...\n | CONDITION condition_number condition_information_item\n &#91;, condition_information_item] ...\n}\nstatement_information_item:\n target = statement_information_item_name\ncondition_information_item:\n target = condition_information_item_name\nstatement_information_item_name:\n NUMBER\n | ROW_COUNT\ncondition_information_item_name: {\n CLASS_ORIGIN\n | SUBCLASS_ORIGIN\n | RETURNED_SQLSTATE\n | MESSAGE_TEXT\n | GBASE_ERRNO\n | CONSTRAINT_CATALOG\n | CONSTRAINT_SCHEMA\n | CONSTRAINT_NAME\n | CATALOG_NAME\n | SCHEMA_NAME\n | TABLE_NAME\n | COLUMN_NAME\n | CURSOR_NAME\n}\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"statement_information_item\"><\/span>statement_information_item<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>statment \u6267\u884c\u60c5\u51b5\u4fe1\u606f\u6355\u83b7\u53cd\u9988\uff0c\u5305\u62ec NUMBER\u3001ROW_COUNT<\/p>\n\n\n\n<p>number\uff1anumber \u4e2d\u5305\u542b WARNING \u548c\u9519\u8bef\u7684\u6570\u91cf\u3002<\/p>\n\n\n\n<p>row_count\uff1a\u53ea\u8bb0\u5f55 GET DIAGNOSTICS \u547d\u4ee4\u4e4b\u524d\u6700\u540e\u4e00\u6761 DML \u64cd\u4f5c\u7684\u5f71\u54cd\u884c\u6570\uff0c\u4e0d\u80fd\u7d2f\u52a0\uff0c\u5982\u679c\u60f3\u83b7\u53d6\u591a\u6761 DML \u8bed\u53e5\u7684\u5f71\u54cd\u884c\u6570\uff0c\u9700\u8981\u5728\u6bcf\u6761 DML \u8bed\u53e5\u540e\u6267\u884c GET DIAGNOSTICS\u547d\u4ee4\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"condition_information_item\"><\/span>condition_information_item<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>\u6355\u83b7\u5f02\u5e38\u60c5\u51b5\u4fe1\u606f\uff0c\u5982\u4e0b3\u4e2a\u662f\u6700\u5e38\u89c1\u7684\u3002<\/p>\n\n\n\n<p>gbase_errno\uff1a\u8bb0\u5f55\u9519\u8bef\u53f7\u3002<\/p>\n\n\n\n<p>returned_sqlstate\uff1a\u8bb0\u5f55\u9519\u8bef\u72b6\u6001\u3002<\/p>\n\n\n\n<p>message_text\uff1a\u8bb0\u5f55\u9519\u8bef\u4fe1\u606f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%AE%9A%E4%B9%89%E5%BC%82%E5%B8%B8%E6%9D%A1%E4%BB%B6%E4%BF%A1%E6%81%AF%E7%9A%84%E5%88%AB%E5%90%8D\"><\/span>\u5b9a\u4e49\u5f02\u5e38\u6761\u4ef6\u4fe1\u606f\u7684\u522b\u540d<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>DECLARE condition_name CONDITION FOR condition_value\ncondition_value:\n SQLSTATE &#91;VALUE] sqlstate_value\n | gbase_error_code\n<\/code><\/pre>\n\n\n\n<p>condition_name\uff1a\u81ea\u5b9a\u4e49\u7684\u6761\u4ef6\u4fe1\u606f\u540d\u5b57<\/p>\n\n\n\n<p>condition_value\uff1a\u4e0edeclare handler\u7684\u76f8\u540c\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%AF%B4%E6%98%8E\"><\/span>\u8bf4\u660e<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>GBase 8a\u7684\u5b58\u50a8\u8fc7\u7a0b\u5f02\u5e38\u5904\u7406\uff0c\u53ea\u80fd\u5728\u5b58\u50a8\u8fc7\u7a0b\u5185\u90e8\uff0c\u901a\u8fc7declare\u58f0\u660e\u8981\u5904\u7406\u7684\u5f02\u5e38\u5185\u5bb9\u3002\u5f53\u5f02\u5e38\u53d1\u751f\u65f6\uff0c\u6700\u63a5\u8fd1\u7684\u4e0a\u4e00\u7ea7declare\u5339\u914d\u5e76\u751f\u6548\u3002\u5728\u5f02\u5e38\u5904\u7406\u5185\u90e8\uff0c\u53ef\u4ee5\u901a\u8fc7get DIAGNOSTICS \u83b7\u5f97\u5f02\u5e38\u53d1\u751f\u65f6\u7684\u4e0a\u4e0b\u6587\u73af\u5883\u4fe1\u606f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%A0%B7%E4%BE%8B\"><\/span>\u6837\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%9C%80%E5%9F%BA%E6%9C%AC%E7%9A%84\"><\/span>\u6700\u57fa\u672c\u7684<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u5982\u4e0b\u6355\u83b7\u6240\u6709SQL\u9519\u8bef\uff0c\u5e76\u8bbe\u7f6e\u4e86\u4e00\u4e2a\u62a5\u9519\u7684session\u53d8\u91cf\u4fe1\u606f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>drop procedure if exists p_test;\ndelimiter \/\/\ncreate procedure p_test()\nbegin\n  declare exit handler for sqlexception \n  begin \n    set @errsing=1; \n  end;\nend\/\/\ndelimiter ;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BC%82%E5%B8%B8%E6%9D%A1%E4%BB%B6%E4%BF%A1%E6%81%AF%E7%9A%84%E5%88%AB%E5%90%8D\"><\/span>\u81ea\u5b9a\u4e49\u5f02\u5e38\u6761\u4ef6\u4fe1\u606f\u7684\u522b\u540d<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u4e3b\u8981\u662f\u81ea\u5b9a\u4e49\u7684\u540d\u5b57\u66f4\u5bb9\u6613\u8bc6\u522b\u3002\u5982\u4e0b\u5b9a\u4e49\u4e86\u4e00\u4e2a\u672a\u77e5\u8868\u540d\u7684\u6761\u4ef6\u7684\u522b\u540d\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>drop procedure if exists p_test;\ndelimiter \/\/\ncreate procedure p_test()\nbegin\n    declare d_unknown_table condition for SQLSTATE '42S02';\n    declare exit handler for d_unknown_table \n    begin \n        set @err_sign=1; \n    end;\n    select * from t_not_exists;\nend\/\/\ndelimiter ;\ncall p_test();\nselect @err_sign;<\/code><\/pre>\n\n\n\n<p>\u6267\u884c\u6548\u679c\u5982\u4e0b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; call p_test();\nQuery OK, 0 rows affected (Elapsed: 00:00:00.01)\n\ngbase&gt; select @err_sign;\n+-----------+\n| @err_sign |\n+-----------+\n|         1 |\n+-----------+\n1 row in set (Elapsed: 00:00:00.00)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%8E%B7%E5%BE%97%E6%8A%A5%E9%94%99%E4%BF%A1%E6%81%AF\"><\/span>\u83b7\u5f97\u62a5\u9519\u4fe1\u606f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u5982\u4e0b\u6837\u4f8b\uff0c\u83b7\u5f97\u4e86\u9519\u8bef\u7684SQLSTATE\uff0c\u62a5\u9519\u4fe1\u606f\u4ee5\u53ca\u62a5\u9519\u7684\u9519\u8bef\u53f7\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>drop procedure if exists p_test;\ndelimiter \/\/\ncreate procedure p_test()\nbegin\n    declare d_unknown_table condition for SQLSTATE '42S02';\n    declare exit handler for d_unknown_table \n    begin \n        GET DIAGNOSTICS CONDITION 1\n            @p1 = RETURNED_SQLSTATE, \n            @p2 = MESSAGE_TEXT,\n            @p3=gbase_errno;\n        set @err_sign=1; \n        \n    end;\n    select * from t_not_exists;\nend\/\/\ndelimiter ;\ncall p_test();\nselect @err_sign;\nselect @p1,@p2,@p3;<\/code><\/pre>\n\n\n\n<p>\u4ece\u6267\u884c\u6548\u679c\u770b\uff0c\u5bf9\u6bd4\u76f4\u63a5\u6267\u884c\u7684\u62a5\u9519\u4fe1\u606f\uff0c\u62ff\u5230\u4e86\u6211\u4eec\u9884\u671f\u7684\u5185\u5bb9\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; select * from t_not_exists;\nERROR 1146 (42S02): Table 'testdb.t_not_exists' doesn't exist\n\ngbase&gt; call p_test();\nQuery OK, 0 rows affected (Elapsed: 00:00:00.00)\n\ngbase&gt; select @err_sign;\n+-----------+\n| @err_sign |\n+-----------+\n|         1 |\n+-----------+\n1 row in set (Elapsed: 00:00:00.00)\n\ngbase&gt; select @p1,@p2,@p3;\n+-------+-------------------------------------------+------+\n| @p1   | @p2                                       | @p3  |\n+-------+-------------------------------------------+------+\n| 42S02 | Table 'testdb.t_not_exists' doesn't exist | 1146 |\n+-------+-------------------------------------------+------+\n1 row in set (Elapsed: 00:00:00.00)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%B8%B8%E6%A0%87%E5%88%B0%E7%BB%93%E6%9E%9C%E9%9B%86%E6%9C%AB%E5%B0%BE%E7%9A%84NOT_FOUND\"><\/span>\u6e38\u6807\u5230\u7ed3\u679c\u96c6\u672b\u5c3e\u7684NOT FOUND<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u5982\u4e0b\u67e5\u8be22\u884c\u6570\u636e\u540e\uff0c\u4e0d\u518d\u6709\u65b0\u7684\u6570\u636e\uff0c\u6253\u5370\u8f93\u51fa\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>drop procedure if exists p_test;\ndelimiter \/\/\ncreate procedure p_test()\nbegin\n    declare done int DEFAULT 0;\n    DECLARE a INT DEFAULT 0;\n    DECLARE cur_1 CURSOR FOR SELECT * FROM t1 limit 2;\n    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;\n    OPEN cur_1;\n    REPEAT\n      FETCH cur_1 INTO a;\n  \n      IF NOT done THEN\n        select a;\n      else\n        select 'no more record';\n      END IF;\n    UNTIL done END REPEAT;\n\n    CLOSE cur_1;\n\nend\/\/\ndelimiter ;\ncall p_test();<\/code><\/pre>\n\n\n\n<p>\u6267\u884c\u7ed3\u679c\u5982\u4e0b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; call p_test();\n+-------+\n| a     |\n+-------+\n| 17400 |\n+-------+\n1 row in set (Elapsed: 00:00:00.01)\n\n+-------+\n| a     |\n+-------+\n| 31569 |\n+-------+\n1 row in set (Elapsed: 00:00:00.01)\n\n+----------------+\n| no more record |\n+----------------+\n| no more record |\n+----------------+\n1 row in set (Elapsed: 00:00:00.01)\n\nQuery OK, 0 rows affected (Elapsed: 00:00:00.01)\n\ngbase&gt;\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%B5%8C%E5%A5%97BEGIN_END%E5%86%85%E5%B1%82declare%E7%9A%84%E5%A4%84%E7%90%86\"><\/span>\u5d4c\u5957BEGIN END\u5185\u5c42declare\u7684\u5904\u7406<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u5982\u4e0b\u4f7f\u7528\u4e86\u4e00\u4e2a\u5185\u5d4c\u7684BEGIN END\u5757\uff0c\u5e76\u58f0\u660e\u4e86\u81ea\u5df1\u7684\u5f02\u5e38\u5904\u7406\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>drop procedure if exists p_test;\ndelimiter \/\/\ncreate procedure p_test()\nbegin\n    declare done int DEFAULT 0;\n    DECLARE a INT DEFAULT 0;\n    select 'out begin';\n    \n    begin\n        DECLARE cur_1 CURSOR FOR SELECT * FROM t1 limit 2;\n        DECLARE Continue HANDLER FOR NOT FOUND SET done = TRUE;\n        select 'Inner begin';\n        OPEN cur_1;\n        REPEAT\n          FETCH cur_1 INTO a;\n      \n          IF NOT done THEN\n            select a;\n          else\n            select 'no more record';\n          END IF;\n          \n         \n        UNTIL done END REPEAT;\n        select 'Inner end';\n        CLOSE cur_1;\n    end;\n    select 'out end';\nend\/\/\ndelimiter ;\ncall p_test();<\/code><\/pre>\n\n\n\n<p>\u6267\u884c\u7ed3\u679c\u5982\u4e0b\uff1a\u5176\u4e2dcontinue\u4f1a\u7ee7\u7eed\u6267\u884c,\u8f93\u51fa\u4e86Inner end<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; call p_test();\n+-----------+\n| out begin |\n+-----------+\n| out begin |\n+-----------+\n1 row in set (Elapsed: 00:00:00.02)\n\n+-------------+\n| Inner begin |\n+-------------+\n| Inner begin |\n+-------------+\n1 row in set (Elapsed: 00:00:00.02)\n\n+-------+\n| a     |\n+-------+\n| 17400 |\n+-------+\n1 row in set (Elapsed: 00:00:00.03)\n\n+-------+\n| a     |\n+-------+\n| 31569 |\n+-------+\n1 row in set (Elapsed: 00:00:00.03)\n\n+----------------+\n| no more record |\n+----------------+\n| no more record |\n+----------------+\n1 row in set (Elapsed: 00:00:00.04)\n\n+-----------+\n| Inner end |\n+-----------+\n| Inner end |\n+-----------+\n1 row in set (Elapsed: 00:00:00.04)\n\n+---------+\n| out end |\n+---------+\n| out end |\n+---------+\n1 row in set (Elapsed: 00:00:00.04)\n\nQuery OK, 0 rows affected (Elapsed: 00:00:00.04)\n\ngbase&gt;\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%86%85%E5%B1%82%E5%B5%8C%E5%A5%97exit_handler%E7%9A%84%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C\"><\/span>\u5185\u5c42\u5d4c\u5957exit handler\u7684\u6267\u884c\u7ed3\u679c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u5c06\u5982\u4e0a\u4f8b\u5b50\u7684continue\u6539\u6210exit\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>drop procedure if exists p_test;\ndelimiter \/\/\ncreate procedure p_test()\nbegin\n    declare done int DEFAULT 0;\n    DECLARE a INT DEFAULT 0;\n    select 'out begin';\n    \n    begin\n        DECLARE cur_1 CURSOR FOR SELECT * FROM t1 limit 2;\n        DECLARE Exit HANDLER FOR NOT FOUND SET done = TRUE;\n        select 'Inner begin';\n        OPEN cur_1;\n        REPEAT\n          FETCH cur_1 INTO a;\n      \n          IF NOT done THEN\n            select a;\n          else\n            select 'no more record';\n          END IF;\n          \n         \n        UNTIL done END REPEAT;\n        select 'Inner end';\n        CLOSE cur_1;\n    end;\n    select 'out end';\nend\/\/\ndelimiter ;\ncall p_test();<\/code><\/pre>\n\n\n\n<p>\u6267\u884c\u7ed3\u679c\uff0cExit\u9000\u51fa\u4e86\u5185\u5d4c\u7684BEGIN END,\u5728\u5916\u5c42\u7ee7\u7eed\u6267\u884c\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; call p_test();\n+-----------+\n| out begin |\n+-----------+\n| out begin |\n+-----------+\n1 row in set (Elapsed: 00:00:00.04)\n\n+-------------+\n| Inner begin |\n+-------------+\n| Inner begin |\n+-------------+\n1 row in set (Elapsed: 00:00:00.04)\n\n+-------+\n| a     |\n+-------+\n| 17400 |\n+-------+\n1 row in set (Elapsed: 00:00:00.05)\n\n+-------+\n| a     |\n+-------+\n| 31569 |\n+-------+\n1 row in set (Elapsed: 00:00:00.05)\n\n+---------+\n| out end |\n+---------+\n| out end |\n+---------+\n1 row in set (Elapsed: 00:00:00.05)\n\nQuery OK, 0 rows affected (Elapsed: 00:00:00.05)\n\n\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5357\u5927\u901a\u7528GBase 8a\u6570\u636e\u5e93\u652f\u6301\u5b58\u50a8\u8fc7\u7a0b\u7684\u5f02\u5e38\u5904\u7406\uff0c\u901a\u8fc7handler\u6355\u83b7\u5f02\u5e38\uff0c\u901a\u8fc7get DIAGNOSTIC\u83b7\u5f97\u5f02\u5e38\u8be6\u7ec6\u4fe1\u606f\uff0c\u5e76\u63d0\u4f9bcontinue\u548cexit\u4e24\u79cd\u6d41\u7a0b\u65b9\u6848\u3002\u672c\u6587\u4ecb\u7ecdGBase 8a\u5f02\u5e38\u5904\u7406\u6709\u5173\u8bed\u6cd5\u548c\u6837\u4f8b\u3002<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[92],"class_list":["post-2847","post","type-post","status-publish","format-standard","hentry","category-gbase8a","tag-92"],"_links":{"self":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/2847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/comments?post=2847"}],"version-history":[{"count":24,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/2847\/revisions"}],"predecessor-version":[{"id":4959,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/2847\/revisions\/4959"}],"wp:attachment":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/media?parent=2847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/categories?post=2847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/tags?post=2847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}