如何处理mysql存储过程中的任何错误。 [英] How to handle any error in mysql stored procedure.
问题描述
我创建了一个存储过程,使用了一些处理程序1062处理程序和1264处理程序
1062处理程序正常工作。但是1264处理程序无法正常工作。创建sp并执行时
- 显示1062错误正确
致电insert_article_tags_2(1,1)
- 没有显示超出范围错误
调用insert_article_tags_2(155555555555555,1877777755555555555)
为什么请提前帮助我。谢谢。
我的尝试:
I have created a stored procedure with using some handlers 1062 handler and 1264 handler
1062 handler working fine.but 1264 handler is not working.After creating sp and while executing
--showing 1062 error correct
call insert_article_tags_2(1,1)
--it is not showing out of range errror
call insert_article_tags_2(155555555555555,1877777755555555555)
why please help me on this.thanks in advance.
What I have tried:
DELIMITER $$
CREATE PROCEDURE insert_article_tags_2(IN article_id INT, IN tag_id INT)
BEGIN
declare exit handler for sqlexception
select 'sql exception invoked';
DECLARE EXIT HANDLER FOR 1062
SELECT 'MySQL error code 1062 invoked';
DECLARE EXIT HANDLER FOR 1264
SELECT 'Out of range exception';
-- insert a new record into article_tags
INSERT INTO article_tags(article_id,tag_id)
VALUES(article_id,tag_id);
END
推荐答案
CREATE PROCEDURE insert_article_tags_2( IN article_id INT , IN tag_id INT )
BEGIN
声明 退出 handler for sqlexception
select ' 调用sql异常';
DECLARE 退出 HANDLER FOR 1062
SELECT 调用MySQL错误代码1062';
DECLARE 退出 HANDLER FOR 1264
SELECT ' 超出范围的例外';
- 在article_tags中插入新记录
INSERT INTO article_tags(article_id,tag_id)
VALUES 跨度>(article_id的,TAG_ID);
END
CREATE PROCEDURE insert_article_tags_2(IN article_id INT, IN tag_id INT) BEGIN declare exit handler for sqlexception select 'sql exception invoked'; DECLARE EXIT HANDLER FOR 1062 SELECT 'MySQL error code 1062 invoked'; DECLARE EXIT HANDLER FOR 1264 SELECT 'Out of range exception'; -- insert a new record into article_tags INSERT INTO article_tags(article_id,tag_id) VALUES(article_id,tag_id); END
这取决于你打电话的地方/>
It depends from where you are calling
call insert_article_tags_2(155555555555555,1877777755555555555)
传递的参数超出了32位整数可以保存的值(使用的类型为SQL INT
)。语言/ shell或你调用它的地方可能只是截断传递的参数:
The passed arguments are beyond the values that can be hold by a 32-bit integer (the used type for SQL INT
). The language / shell or from where you are calling it may just truncate the passed arguments:
155555555555555 = 8D7A19A1B8E3 hex
这可能被截断为
That may be truncated to
19A1B8E3 hex = 430029027
这是一个有效值。
这篇关于如何处理mysql存储过程中的任何错误。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!