zoukankan      html  css  js  c++  java
  • 使用 RAISERROR

    使用 RAISERROR

    与 PRINT 相比,RAISERROR 在把消息返回给应用程序方面的功能更强大。RAISERROR 能以下列方式中的任意一种返回消息:

    • 已通过 sp_addmessage 系统存储过程添加到 master.dbo.sysmessages 上的由用户定义的错误信息。
    • 在 RAISERROR 语句中指定的消息字符串。

    RAISERROR 也有 PRINT 功能的一些扩展:

    • RAISERROR 能够指派一个特定的错误号、严重度和状态。
    • RAISERROR 能够请求将错误记入 Microsoft® SQL Server™ 2000 错误日志和 Microsoft Windows NT® 应用程序日志中。
    • 消息字符串可以包含替代变量和参量,这与 C 语言中的 printf 功能相似。

    当 RAISERROR 在sysmessages 中与用户定义消息的 msg_id 一同使用时,msg_id 被作为 SQL Server 的错误号码或本机错误代码返回。而当 RAISERROR 与 msg_str 而不是 msg_id 一同使用时,返回的 SQL Server 的错误号和本机错误号为 50000。

    当使用 RAISERROR 返回一个用户定义的错误信息时,在每个引用该错误的 RAISERROR 中使用不同的状态号码。这可以在发生错误时帮助进行错误诊断。

    RAISERROR 可以帮助我们发现并解决 Transact-SQL 代码中的问题、检查数据值或返回包含变量文本的消息。

    下面的示例在返回给应用程序的消息中替换了 DB_ID 和 DB_NAME 函数的值:

    DECLARE @DBID INT
    SET @DBID = DB_ID()
    
    DECLARE @DBNAME NVARCHAR(128)
    SET @DBNAME = DB_NAME()
    
    RAISERROR
       ('The current database ID is:%d, the database name is: %s.',
        16, 1, @DBID, @DBNAME)
    

    而以下示例使用由用户定义的消息完成了同样的处理:

    sp_addmessage 50005, 16,
        'The current database ID is:%d, the database name is: %s.'
    GO
    DECLARE @DBID INT
    SET @DBID = DB_ID()
    
    DECLARE @DBNAME NVARCHAR(128)
    SET @DBNAME = DB_NAME()
    
    RAISERROR (50005, 16, 1, @DBID, @DBNAME)
    GO
    

    第二个 RAISERROR 示例显示,替换参数可以在由用户定义的错误中指定,并且当 RAISERROR 语句执行时由替换参变量填充。

    可随意转载,欢迎署名!
  • 相关阅读:
    ITPUB:按道理应该走的局部分区索引
    如何用正则取美国人名.
    Commit Enhancements in Oracle 10g Database Release 2
    关羽(162219)
    使用Oracle在线重定义包 DBMS_REDEFINITION 在不停业务的情况下增加或修改字段
    Online Table Redefinition Enhancements in Oracle Database 11g Release 1
    关于分区表和分区索引
    如何切换用户到不同用户Session上
    PL/SQL Enhancements in Oracle Database 10g
    Using Regular Expressions in Oracle Database
  • 原文地址:https://www.cnblogs.com/netsa/p/2713537.html
Copyright © 2011-2022 走看看