程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> How to throw an error in MySql procedure?,throwprocedure

How to throw an error in MySql procedure?,throwprocedure

編輯:MySQL綜合教程

How to throw an error in MySql procedure?,throwprocedure


http://stackoverflow.com/questions/4862911/how-to-throw-an-error-in-mysql-procedure

9down votefavorite  

What is the mechanism to force the MySQL to throw an error within the stored procedure?

I have a procedure which call s another function:

PREPARE my_cmd FROM @jobcommand;
EXECUTE my_cmd;
DEALLOCATE PREPARE my_cmd;

the job command is:

jobq.exec("Select 1;wfdlk# to simulatte an error");

then:

CREATE PROCEDURE jobq.`exec`(jobID VARCHAR(128),cmd TEXT)
BEGIN
DECLARE result INT DEFAULT 0;  
SELECT sys_exec( CONCAT('echo ',cmd,' |  base64 -d > ', '/tmp/jobq.',jobID,'.sh ; bash /tmp/jobq.',jobID,'.sh &> /tmp/jobq.',jobID)) INTO result; 
IF result>0 THEN 
# call raise_mysql_error(result); 
END IF;
END;

My jobq.exec is always succeeding. Are there way to rise an error? How to implement raise_mysql_error function??

BTW I am using MySQL 5.5.8

thanks Arman.

mysql stored-procedures throw stored-functions shareimprove this question asked Feb 1 '11 at 13:06 Arman 1,89652952   1   related : stackoverflow.com/questions/465727/… – Haim Evgi Feb 1 '11 at 13:09      also read this chapter docstoc.com/docs/687360/Error-Handling-In-Stored-Procedure – Haim Evgi Feb 1 '11 at 13:11 add a comment

2 Answers

activeoldestvotes up vote7down voteaccepted

Yes, there is: use the SIGNAL keyword.

shareimprove this answer edited Sep 2 '14 at 16:52 Air 3,75212446 answered Feb 1 '11 at 13:20 Halasy 861   2   Thank you! DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err= 1 exactly that what I need!!! – Arman Feb 2 '11 at 11:11 add a comment up vote5down vote

You may use following stored procedure to emulate error-throwing:

CREATE PROCEDURE `raise`(`errno` BIGINT UNSIGNED, `message` VARCHAR(256))
BEGIN
SIGNAL SQLSTATE
    'ERR0R'
SET
    MESSAGE_TEXT = `message`,
    MYSQL_ERRNO = `errno`;
END

Example:

CALL `raise`(1356, 'My Error Message');

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved