【问题标题】:Mysql continue handler sytax errorMysql continue 处理程序语法错误
【发布时间】:2014-03-21 22:11:16
【问题描述】:

我看不出这个语法有什么问题,请帮忙!我试图从这里查找语法 http://dev.mysql.com/doc/refman/5.5/en/declare-handler.html

   DELIMITER $$
    DROP PROCEDURE IF EXISTS `load_dimensions`$$
    CREATE PROCEDURE `load_dimensions`( )
    BEGIN

     -- Declare variables to hold diagnostics area information
      DECLARE code CHAR(5) DEFAULT '00000';
      DECLARE msg TEXT;
      DECLARE rows INT;
      DECLARE result varchar(300);
      -- Declare exception handler for failed insert
      DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
      BEGIN
           GET DIAGNOSTICS CONDITION 1 code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;
      END;

    INSERT  dimtable(col)
    SELECT  col FROM extract;

    IF code = '00000' THEN
        GET DIAGNOSTICS rows = ROW_COUNT;
        SET result = CONCAT('succeeded, row count = ',rows);
        INSERT INTO etl_log (result)
        SELECT CONCAT('Error',state,': ',msg);
      ELSE
        SET result = CONCAT('failed, error = ',code,', message = ',msg);
        INSERT INTO etl_log (result)
        SELECT CONCAT('Error',state,': ',msg);
      END IF;

    END $$ 

【问题讨论】:

  • 如果您看到错误消息,如果您也发布它会非常有帮助。
  • 错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'DIAGNOSTICS CONDITION 1 code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT; 附近使用正确的语法。结尾;'在第 12 行

标签: mysql error-handling


【解决方案1】:

来自MySQL 5.5 reference pages

直到 MySQL 5.6 才支持 GET DIAGNOSTICS 语句。

【讨论】:

  • 谢谢我刚刚发现我们的mysql版本是5.5.35我可以用什么其他语句来获取错误消息文本?
猜你喜欢
  • 2022-11-30
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 2016-08-18
  • 2023-03-09
  • 2011-05-17
  • 1970-01-01
相关资源
最近更新 更多