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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Anweisungen » SQL-Anweisungen (P-Z)

 

RAISERROR-Anweisung

Mit dieser Anweisung signalisieren Sie einen Fehler und senden eine Meldung an den Client.

Syntax
RAISERROR Fehlernummer [ Formatzeichenfolge ] [, Argumentliste ]
Parameter
  • Fehlernummer   Die Fehlernummer ist eine fünfstellige Ganzzahl, die größer ist als 17000. Die Fehlernummer wird in der globalen Variablen @@error gespeichert.

  • Formatzeichenfolge   Wenn die Formatzeichenfolge nicht angegeben oder leer ist, wird die Fehlernummer verwendet, um eine Fehlermeldung in den Systemtabellen ausfindig zu machen. Adaptive Server Enterprise erhält die Meldungen 17000-19999 aus der Tabelle SYSMESSAGES. In SQL Anywhere ist diese Tabelle eine leere Ansicht, sodass Fehler in diesem Bereich eine Formatzeichenfolge liefern sollten. Meldungen für die Fehlernummern 20000 und größer werden aus der Tabelle ISYSUSERMESSAGE bezogen.

    In SQL Anywhere kann die Länge der Formatzeichenfolge bis zu 255 Byte betragen.

    Die erweiterten Werte, welche die RAISERROR-Anweisung in Adaptive Server Enterprise unterstützt, werden in SQL Anywhere nicht unterstützt.

    Die Formatzeichenfolge kann Platzhalter für die Argumente in der optionalen Argumentliste enthalten. Diese Platzhalter haben die Form %nn!, wobei nn eine Ganzzahl zwischen 1 und 20 ist.

    Dazwischenliegende RAISERROR-Statusangaben und -Codes gehen verloren, wenn die Prozedur abgeschlossen ist. Wenn zum Rückgabezeitpunkt zusammen mit RAISERROR ein Fehler auftritt, dann werden die Fehlerinformationen zurückgegeben, und die RAISERROR-Informationen gehen verloren. Die Anwendung kann dazwischenliegende RAISERROR-Statusangaben abfragen, indem sie die globale Variable @@error zu verschiedenen Ausführungspunkten überprüft.

Bemerkungen

Mit der RAISERROR-Anweisung können benutzerdefinierte Fehler angezeigt und eine Meldung an den Client gesendet werden.

Berechtigungen

Keine.

Nebenwirkungen

Keine.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

Die folgende Anweisung verursacht den Fehler 23000, der im Bereich der benutzerdefinierten Fehler liegt, und sendet eine Meldung an den Client. Beachten Sie, dass zwischen den Parametern Fehlernummer und der Formatzeichenfolge kein Komma steht. Das erste Element nach einem Komma wird als erstes Element der Argumentliste interpretiert.

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

Im nächsten Beispiel wird RAISERROR benutzt, um Verbindungen zu verbieten.

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

Eine andere Methode zum Sperren von Verbindungen finden Sie unter login_procedure-Option [Datenbank].