Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (P ~ Z)

 

RAISERROR 文

この文は、エラー信号を送り、クライアントにメッセージを送信するために使用します。

構文
RAISERROR error-number [ format-string ] [, arg-list ]
パラメータ
  • error-number   error-number は、17000 を超える 5 桁の整数です。このエラー番号はグローバル変数 @@error に格納されます。

  • format-string   format-string を指定しないか、空にすると、エラー番号を使用してシステム・テーブルのエラー・メッセージが検索されます。Adaptive Server Enterprise は、17000 から 19999 までのメッセージを SYSMESSAGES テーブルから取得します。SQL Anywhere では、このテーブルは空のビューなので、この範囲のエラーはフォーマット文字列を指定するようにしてください。エラー番号が 20000 以上のメッセージは、ISYSUSERMESSAGE テーブルから取得します。

    SQL Anywhere では、format-string の長さは 255 バイトまで可能です。

    Adaptive Server Enterprise RAISERROR 文でサポートされる拡張値は、SQL Anywhere ではサポートされていません。

    フォーマット文字列は、オプション引数リスト (arg-list) にある引数のプレースホルダを含むことができます。プレースホルダの形式は %nn! で、nn は 1 ~ 20 の間の整数です。

    中間レベルの RAISERROR のステータスとコード情報は、プロシージャが終了すると失われます。結果が返されるときに RAISERROR と一緒にエラーが発生した場合は、エラー情報が返され、RAISERROR 情報は失われます。アプリケーションでは、別の実行ポイントでグローバル変数 @@error を検査して、中間の RAISERROR ステータスを問い合わせることができます。

備考

RAISERROR 文で、ユーザ定義エラーの信号を送り、クライアント上にメッセージを送信できます。

パーミッション

なし

関連する動作

なし

参照
標準と互換性
  • SQL/2003   ベンダ拡張。

次の文はエラー 23000 を発します。これはユーザ定義エラーの範囲で、クライアントにメッセージを送信します。パラメータ error-number format-string の間にカンマがないことに注意してください。カンマの後にある最初の項目は、引数リストの最初の項目として解釈されます。

RAISERROR 23000 'Invalid entry for this column: %1!', @val

次の例では、RAISERROR を使用して接続を禁止します。

CREATE PROCEDURE DBA.login_check()
BEGIN
    // Allow a maximum of 3 concurrent connections
    IF( DB_PROPERTY('ConnCount') > 3 ) THEN
         RAISERROR 28000
      'User %1! is not allowed to connect -- there are ' ||
                      'already %2! users logged on',
      Current User,
      CAST( DB_PROPERTY( 'ConnCount' ) AS INT )-1;
    ELSE
         CALL sp_login_environment;
    END IF;
END
go
GRANT EXECUTE ON DBA.login_check TO PUBLIC
go
SET OPTION PUBLIC.login_procedure='DBA.login_check'
go

接続を禁止する代替方法については、login_procedure オプション [データベース]を参照してください。