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 (A-D)

 

CREATE PROCEDURE-Anweisung [T-SQL]

Mit dieser Anweisung erstellen Sie eine neue Prozedur in der Datenbank so, dass sie mit Adaptive Server Enterprise kompatibel ist.

Syntax 1

Die folgende Teilmenge der Transact-SQL CREATE PROCEDURE-Anweisung wird in SQL Anywhere unterstützt.

CREATE PROCEDURE [Eigentümer.]Prozedurname
[ NO RESULT SET ]
[ [ ( ] @Parametername Datentyp [ = Standardwert ] [ OUTPUT ], ... [ ) ] ]
[ WITH RECOMPILE ] AS Anweisungsliste
Parameter
  • NO RESULT SET-Klausel   Deklariert, dass von dieser Prozedur keine Ergebnismenge zurückgegeben wird. Das ist nützlich, wenn eine externe Umgebung wissen muss, dass eine Prozedur keine Ergebnismenge zurückgibt.

Bemerkungen

Im Folgenden werden Unterschiede zwischen Transact-SQL- und SQL Anywhere-Anweisungen (Watcom SQL) als Hilfe für alle aufgelistet, die in beiden Dialekten schreiben.

  • Variablennamen mit Präfix @   Das Zeichen "@" bezeichnet einen Variablennamen von Transact-SQL. Eine Watcom SQL-Variable kann jedoch jeder gültige Bezeichner sein, und das Präfix @ ist optional.

  • Eingabe- und Ausgabeparameter   Die Prozedurparameter von Watcom-SQL sind standardmäßig auf INOUT gesetzt. Sie können aber auch IN, OUT oder INOUT angeben. Die Prozedurparameter von Transact-SQL sind standardmäßig auf INPUT gesetzt. Sie können auch OUTPUT angeben. Die Parameter, welche in SQL Anywhere als INOUT oder als OUT deklariert werden, müssen in Transact-SQL mit OUTPUT deklariert werden.

  • Standardwerte für Parameter   In Watcom-SQL werden Prozedurparametern mit dem Schlüsselwort DEFAULT Standardwerte zugewiesen. In Transact-SQL wird ein Gleichheitszeichen (=) verwendet, um den Standardwert bereitzustellen.

  • Ergebnismengen zurückgeben   Watcom-SQL verwendet eine RESULT-Klausel, um zurückgegebene Ergebnismengen anzugeben. In Transact-SQL-Prozeduren werden die Spaltennamen oder Aliasnamen der ersten Abfrage an die aufrufende Umgebung zurückgegeben.

    Die folgende Transact-SQL-Prozedur veranschaulicht, wie Ergebnismengen von gespeicherten Prozeduren in Transact-SQL zurückgegeben werden:

    CREATE PROCEDURE showdept @deptname varchar(30)
    AS
       SELECT Employees.Surname, Employees.GivenName
       FROM Departments, Employees
       WHERE Departments.DepartmentName = @deptname
       AND Departments.DepartmentID = Employees.DepartmentID;

    Im Folgenden wird die entsprechende Watcom SQL-Prozedur aufgeführt:

    CREATE PROCEDURE showdept(in deptname
             varchar(30) )
    RESULT ( lastname char(20), firstname char(20))
    ON EXCEPTION RESUME
    BEGIN
       SELECT Employees.Surname, Employees.GivenName
       FROM Departments, Employees
       WHERE Departments.DepartmentName = deptname
       AND Departments.DepartmentID = Employees.DepartmentID
    END;

  • Hauptteil einer Prozedur   Der Hauptteil einer Transact-SQL-Prozedur besteht aus einer Liste von Transact-SQL-Anweisungen, denen das Schlüsselwort AS als Präfix vorausgeht. Der Hauptteil einer Watcom SQL-Prozedur umfasst eine zusammengesetzte Anweisung, die von den beiden Schlüsselwörtern BEGIN und END umschlossen wird.

Berechtigungen

RESOURCE-Datenbankberechtigung ist erforderlich.

Nebenwirkungen

Automatisches Festschreiben (Autocommit).

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Transact-SQL-Erweiterung

  • Sybase   SQL Anywhere unterstützt eine Teilmenge der Syntax der CREATE PROCEDURE-Anweisung für Adaptive Server Enterprise.

    Wenn die optionale Transact-SQL-Klausel WITH RECOMPILE angegeben wird, wird sie ignoriert. SQL Anywhere kompiliert Prozeduren neu, wenn sie beim Start der Datenbank zum ersten Mal ausgeführt werden, und speichert die kompilierte Prozedur, bis die Datenbank angehalten wird.

    Prozedurgruppen werden nicht unterstützt.