Mit dieser Anweisung erstellen Sie eine neue Prozedur in der Datenbank so, dass sie mit Adaptive Server Enterprise kompatibel ist.
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
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.
RESOURCE-Datenbankberechtigung ist erforderlich.
Automatisches Festschreiben (Autocommit).
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.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |