在MySQL存储过程中,我使用以下命令处理SQL异常:
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SELECT "SQL exception occured." AS "SQL Exception";
SHOW ERRORS;
SHOW WARNINGS;
ROLLBACK;
END;
我知道会抛出一个异常,因为正在显示SQL exception occured消息并且事务被回滚。但是,SHOW ERRORS或SHOW WARNINGS
我创建了一个Mysql存储过程来从表中删除一个客户端,这个过程使用将要删除的客户端的id作为参数,如果在表中找不到客户端的id,我想得到一条错误消息。我的过程如下所示:
CREATE PROCEDURE `delete_client`(in cod varchar(8))
BEGIN
-- the code
END
我熟悉oracle处理此错误的方法(如果SQL%NOTFOUND,则引发..)但是我不知道在mysql中怎么做。另外,我是从一个php文件中调用这个过程的,那么我如何从异常中回显错误消息。谢谢!
我正在使用MySQL,我想使用一个"with“语句来读取查询中另一个存储过程的输出,但是当我试图在"with”语句中使用"CALL sp_2()“时,它会抛出一个异常。
这个很好用:
CALL sp_2(user_input);
但这个不是:
WITH A AS (CALL sp_2(user_input))
SELECT * FROM A;
我是不是做错了什么,或者MySQL真的不允许"WITH“语句使用其他存储过程?还有别的解决办法吗?
我试图用phpmyadmin(v4.7.9)在MYSQL中创建一个存储过程(v5.7.21),有时会返回一个空的结果集。
CREATE DEFINER=`my_database`@`%` PROCEDURE `emptytest`(IN `_id` INT(11))
NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
select * from my_table where id=_id
下一个电话是:
call emptytest(1);
当该id存在于表中时,此方法工作得很好:
id name
--------
1 bob
但在没有行可
我用mysql编写了一个存储的proc,当我通过hopper运行它时,它工作得很好,但当我试图从mysql workbench或java运行它时,它没有返回任何结果,也没有显示任何异常。
我将请求您在这方面帮助我
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- ------
我有以下MYSQL查询:
START TRANSACTION;
SELECT sport_id INTO @a FROM sports WHERE sport_id = 2 FOR UPDATE;
UPDATE sports SET sport_name = 'Table Tennis' WHERE sport_id = @a;
if (@a > 1) then
COMMIT;
ELSE
ROLLBACK;
END IF;
问题是它在if语句处返回一个错误:
#1064 -您的SQL语法出现了错误;请检查与您的MySQL服务器版本对应的手册,以获得