mysql 存储过程 错误代码,mysql存储过程错误代码1307

phpmyadmin2.11.92 --APMSEVR5.2.6

写存储过程时提示error 1307 (HY000):Failed to create procedure...

-----------------------------------------------------------------------

将phpmyadmin中的mysql数据库中的表proc删除

执行以下代码重建该表

------------------------------------------------------------------------

CREATE TABLE `proc` (

`db` char(64) character set utf8 collate utf8_bin NOT NULL default '',

`name` char(64) NOT NULL default '',

`type` enum('FUNCTION','PROCEDURE') NOT NULL,

`specific_name` char(64) NOT NULL default '',

`language` enum('SQL') NOT NULL default 'SQL',

`sql_data_access` enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') NOT NULL default 'CONTAINS_SQL',

`is_deterministic` enum('YES','NO') NOT NULL default 'NO',

`security_type` enum('INVOKER','DEFINER') NOT NULL default 'DEFINER',

`param_list` blob NOT NULL,

`returns` char(64) NOT NULL default '',

`body` longblob NOT NULL,

`definer` char(77) character set utf8 collate utf8_bin NOT NULL default '',

`created` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

`modified` timestamp NOT NULL default '0000-00-00 00:00:00',

`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','GBASE80','GBASE81','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE') NOT NULL default '',

`comment` char(64) character set utf8 collate utf8_bin NOT NULL default '',

`character_set_client` char(32) character set utf8 collate utf8_bin default NULL,

`collation_connection` char(32) character set utf8 collate utf8_bin default NULL,

`db_collation` char(32) character set utf8 collate utf8_bin default NU

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 存储过程的错误处理可以使用 `DECLARE` 声明一个异常,并使用 `SIGNAL` 抛出异常,或者使用 `RESIGNAL` 重新抛出异常。以下是一个示例代码: ``` DELIMITER // CREATE PROCEDURE example_procedure (IN param1 INT, IN param2 VARCHAR(255)) BEGIN DECLARE custom_exception CONDITION FOR SQLSTATE '45000'; IF param1 <= 0 THEN SIGNAL custom_exception SET MESSAGE_TEXT = 'Parameter 1 must be greater than 0'; END IF; IF param2 = '' THEN SIGNAL custom_exception SET MESSAGE_TEXT = 'Parameter 2 cannot be empty'; END IF; -- 正常的存储过程逻辑 ... END // DELIMITER ; ``` 在这个示例中,我们声明了一个名为 `custom_exception` 的异常,它将在参数不符合预期时被抛出。我们使用 `SIGNAL` 语句设置异常的消息文本,并使用 `SET MESSAGE_TEXT` 子句设置消息内容。在存储过程的主体中,我们可以使用 `IF` 语句来检查参数的值,并在必要时使用 `SIGNAL` 抛出异常。 要使用存储过程中抛出的异常,你可以在调用存储过程时使用 `DECLARE` 声明一个异常处理程序,并在 `BEGIN` 和 `END` 块中指定处理程序的代码。例如: ``` DECLARE custom_exception CONDITION FOR SQLSTATE '45000'; BEGIN CALL example_procedure(-1, 'hello world'); END -- 处理异常 DECLARE exit handler for custom_exception BEGIN -- 处理异常的代码 END; ``` 在这个示例中,我们声明了一个名为 `custom_exception` 的异常处理程序,并在 `CALL` 语句中调用了 `example_procedure` 存储过程。如果存储过程抛出了异常,我们的异常处理程序将会被触发,并执行所需的代码来处理异常。注意,在处理程序中,我们可以将异常信息记录到日志文件中,或者向用户显示错误消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值