zoukankan      html  css  js  c++  java
  • Raising Error Conditions with MySQL SIGNAL / RESIGNAL Statements

    http://www.mysqltutorial.org/mysql-signal-resignal/

    Summary: in this tutorial, you will learn how to use SIGNAL  and RESIGNAL  statements to raise error conditions inside stored procedures.

    MySQL SIGNAL statement

    You use the SIGNAL  statement to return an error or warning condition to the caller from a stored program e.g., stored procedure, stored functiontrigger or event. The SIGNAL  statement provides you with control over which information for returning such as value and messageSQLSTATE.

    The following illustrates syntax of the SIGNAL statement:

    Following the SIGNAL keyword is a SQLSTATE value or a condition name declared by the DECLARE CONDITION statement. Notice that the SIGNAL statement must always specify a SQLSTATE value or a named condition that defined with an  SQLSTATE value.

    To provide the caller with information, you use the SET clause. If you want to return multiple condition information item names with values, you need to separate each name/value pair by a comma.

    The  condition_information_item_name can be MESSAGE_TEXT, MYSQL_ERRORNO,CURSOR_NAME , etc.

    The following stored procedure adds an order line item into an existing sales order. It issues an error message if the order number does not exist.

    First, it counts the orders with the input order number that we pass to the stored procedure.

    Second, if the number of order is not 1, it raises an error with  SQLSTATE 45000 along with an error message saying that order number does not exist in the orders table.

    Notice that 45000 is a generic SQLSTATE value that illustrates an unhandled user-defined exception.

    If we call the stored procedure  AddOrderItem() and pass a nonexistent order number, we will get an error message.

    MySQL SIGNAL example

    MySQL RESIGNAL statement

    Besides the SIGNAL  statement, MySQL also provides the RESIGNAL  statement used to raise a warning or error condition.

    The RESIGNAL  statement is similar to SIGNAL  statement in term of functionality and syntax, except that:

    • You must use the RESIGNAL  statement within an error or warning handler, otherwise, you will get an error message saying that “RESIGNAL when handler is not active”. Notice that you can use SIGNAL  statement anywhere inside a stored procedure.
    • You can omit all attributes of the RESIGNAL statement, even the SQLSTATE value.

    If you use the RESIGNAL  statement alone, all attributes are the same as the ones passed to the condition handler.

    The following stored procedure changes the error message before issuing it to the caller.

    Let’s call the  Divide() stored procedure.

    mysql resignal

    In this tutorial, we have shown you how to raise error conditions inside stored programs usingSIGNAL  and  RESIGNAL statements.

  • 相关阅读:
    如何增加VM Ware虚拟机的硬盘空间
    安装完成oracle 11g R2 后,使用sqlplus 报错"sqlplus: error while loading shared libraries" ...
    listener.ora
    ExtJS项目框架有关问题讨论
    Oracle启动监听报错:The listener supports no services解决
    Linq学习笔记一
    PAT 1054 The Dominant Color[简单][运行超时的问题]
    Andrew NgML第十八章大规模机器学习
    PAT 1042 Shuffling Machine[难]
    PAT 1103 Integer Factorization[难]
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/5858655.html
Copyright © 2011-2022 走看看