Erstellt eine neue Prozedur in der Datenbank so, dass sie mit Adaptive Server Enterprise kompatibel ist.
Die folgende Teilmenge der Transact-SQL-Anweisung CREATE PROCEDURE wird in SQL Anywhere unterstützt.
CREATE [ OR REPLACE ]PROCEDURE [owner.]procedure_name [ NO RESULT SET ] [ [ ( ] @parameter-name data-type [ = default ] [ OUTPUT ], ... [ ) ] ] [ WITH RECOMPILE ] AS statement-list
OR REPLACE-Klausel Wenn Sie OR REPLACE angeben, wird eine neue Prozedur erstellt oder eine bestehende Prozedur mit demselben Namen ersetzt. Diese Klausel ändert die Definition der Prozedur, lässt aber bestehende Berechtigungen unberührt. Ein Fehler wird zurückgegeben, wenn Sie eine Prozedur ersetzen, die gerade verwendet wird.
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.
WITH RECOMPILE-Klausel Diese Klausel wird zur Kompatibilität mit Transact-SQL akzeptiert, aber 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.
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 Transact-SQL-Variablennamen. Eine Watcom-SQL-Variable kann dagegen jeder gültige Bezeichner sein und das Präfix @ ist optional.
Eingabe- und Ausgabeparameter Watcom-SQL-Prozedurparameter sind standardmäßig auf INOUT gesetzt. Sie können aber auch IN, OUT oder INOUT angeben. Transact-SQL-Prozedurparameter sind standardmäßig INPUT-Parameter. Sie können durch Hinzufügen des Schlüsselworts OUTPUT als INPUT/OUTPUT angegeben werden. Im Transact-SQL-Dialekt gibt es keine reinen OUTPUT-Parameter.
Wenn Sie im Watcom-SQL-Dialekt einen OUT-Parameter deklarieren, ist dies ein reiner OUTPUT-Parameter. Die Mischen von Dialekten wird nicht empfohlen, da es Probleme verursachen kann, wenn die Prozedurdeklaration entladen und zum Neuerstellen der Datenbank verwendet wird. In diesem Fall wird die neue Prozedurdeklaration im Transact-SQL-Dialekt erstellt, das Schlüsselwort OUTPUT wird verwendet und es handelt sich um einen INPUT/OUTPUT-Parameter.
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 liefern 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 Transact-SQL-Prozeduren 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; |
Nachfolgend 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/2008 Transact-SQL-Erweiterung.
Transact-SQL SQL Anywhere unterstützt eine Teilmenge der Syntax der CREATE PROCEDURE-Anweisung für Adaptive Server Enterprise.
Nur Transact-SQL-Prozeduren werden im Transact-SQL-Dialekt von SQL Anywhere unterstützt. Um eine externe Prozedur zu erstellen, müssen Sie die Watcom-SQL-Syntax verwenden. Adaptive Server Enterprise unterstützt nicht die NO RESULT SET-Klausel. Wenn die optionale Transact-SQL-Klausel WITH RECOMPILE angegeben ist, 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.
In SQL Anywhere werden Gruppen von Transact-SQL-Prozeduren nicht unterstützt.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |