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.

  • 相关阅读:
    一个项目需要提交哪了些文档?
    aspose.cells
    国内人才申领《上海市居住证》审核试行办法
    SPRING.NET 1.3.2 学习1组件功能说明
    Nhibernate中实现多数据库支持
    Asp.net Mvc 实用技巧
    windwos server 2008 r2安装,一些最基本设置需要注意的地方
    配置SQL Server的身份验证方式
    MindManager 2012 简介(安装)
    Git 管理篇章
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/5858655.html
Copyright © 2011-2022 走看看