【发布时间】: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