【问题标题】:Does handler can be declared outside procedure (MySql)?处理程序是否可以在过程(MySql)之外声明?
【发布时间】:2012-12-31 11:32:48
【问题描述】:

错误处理程序可以在过程之外声明吗?

DECLARE EXIT HANDLER FOR NOT FOUND ROLLBACK;
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
DECLARE EXIT HANDLER FOR SQLWARNING ROLLBACK;

START TRANSACTION;

INSERT INTO ad_type VALUES (3, 'test');

INSERT INTO ad_type_languages VALUES (3, 'TEST', 'en' , 'yes');

COMMIT;

当我尝试执行此代码时出现错误:

ERROR 1064 (42000) at line 1:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“DECLARE EXIT HANDLER FOR NOT FOUND ROLLBACK”附近使用正确的语法

当我在程序中执行它时它运行正常,但我需要在没有存储过程的脚本中使用它。

提前致谢。

附言

这三个句柄会捕获所有错误吗?

【问题讨论】:

    标签: mysql handlers


    【解决方案1】:

    如果我没记错的话,只能在存储过程、函数或触发器中声明退出处理程序。在此之外不可能声明它。

    【讨论】:

    • 没错。正如文档所说:“DECLARE 只允许在 BEGIN ... END 复合语句中,并且必须在其开始处,在任何其他语句之前。”因此,所有 DECLARE 语句也是如此。 dev.mysql.com/doc/refman/8.0/en/declare.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2022-01-09
    • 2014-09-14
    • 1970-01-01
    相关资源
    最近更新 更多