SQL Anywhere unterstützt eine große Untergruppe von Transact-SQL, einem SQL-Dialekt, der von Sybase Adaptive Server Enterprise unterstützt wird. In diesem Abschnitt wird die SQL-Kompatibilität zwischen SQL Anywhere und Adaptive Server Enterprise beschrieben.
Die Transact-SQL-Unterstützung in SQL Anywhere hat folgenden Zweck:
Anwendungsportierbarkeit Viele Anwendungen, gespeicherte Prozeduren und Batchdateien können so geschrieben werden, dass sie sowohl in Adaptive Server Enterprise- als auch in SQL Anywhere-Datenbanken verwendet werden können.
Datenportierbarkeit SQL Anywhere- und Adaptive Server Enterprise-Datenbanken können mit wenig Aufwand Daten untereinander austauschen und replizieren.
Ziel ist es, Anwendungen zu schreiben, die sowohl mit Adaptive Server Enterprise als auch mit SQL Anywhere arbeiten. Bestehende Adaptive Server Enterprise-Anwendungen erfordern im Allgemeinen einige Änderungen, damit sie in einer SQL Anywhere-Datenbank laufen können.
Die Transact-SQL-Unterstützung in SQL Anywhere hat die folgende Form:
Viele SQL-Anweisungen sind zwischen SQL Anywhere und Adaptive Server Enterprise kompatibel.
Für einige Anweisungen, insbesondere in der in Prozeduren, Triggern und Batches verwendeten Prozedursprache, wird zusätzlich zur Syntax, die von Vorgängerversionen von SQL Anywhere unterstützt wird, eine separate Transact-SQL-Anweisung unterstützt. Bei diesen Anweisungen unterstützt SQL Anywhere zwei Dialekte von SQL. Diese Dialekte werden Transact-SQL (der Dialekt von Adaptive Server Enterprise), und Watcom-SQL (der Dialekt von SQL Anywhere) genannt.
Eine Prozedur, ein Trigger oder ein Batch werden entweder im Transact-SQL- oder im Watcom-SQL-Dialekt ausgeführt. Sie dürfen innerhalb des Batches oder der Prozedur nur Steueranweisungen eines der beiden Dialekte verwenden. Jeder Dialekt hat beispielsweise verschiedene Steueranweisungen.
Das folgende Diagramm veranschaulicht, wie sich die beiden Dialekte überlappen.
SQL Anywhere unterstützt einen großen Anteil der Sprachelemente, Funktionen und Anweisungen in Transact-SQL, um vorhandene Daten zu verarbeiten. SQL Anywhere unterstützt beispielsweise alle nummerischen, Aggregat- und Datums- bzw. Uhrzeitfunktionen sowie alle Zeichenfolgenfunktionen (bis auf eine). Außerdem unterstützt SQL Anywhere erweiterte DELETE- und UPDATE-Anweisungen, die Joins verwenden.
Weiterhin unterstützt SQL Anywhere auch einen großen Anteil der Transact-SQL Stored Procedure-Sprache (CREATE PROCEDURE- und CREATE TRIGGER-Syntax, Steueranweisungen, usw.) sowie viele, wenn auch nicht alle, Aspekte der Anweisungen für die Datendefinitionssprache in Transact-SQL.
Es bestehen Unterschiede im Entwurf der architektonischen und Konfigurationseinrichtungen, die von jedem Produkt unterstützt werden. Deviceverwaltung, Benutzerverwaltung und Wartungstasks, wie z.B. Sicherungen, sind eher systemspezifisch. Sogar hier stehen in SQL Anywhere Transact-SQL-Systemtabellen als Ansichten zur Verfügung, wenn die Tabellen, die in SQL Anywhere bedeutungslos sind, keine Zeilen haben. Außerdem bietet SQL Anywhere eine Reihe von Systemprozeduren für einige der gewöhnlicheren Administrationsaufgaben.
Dieses Kapitel befasst sich zuerst mit einigen Aspekten auf Systemebene, bei denen die Unterschiede am deutlichsten sind, und erläutert dann Sprachaspekte der Datenmanipulation und Datendefinition der Dialekte, bei denen eine hohe Kompatibilität vorliegt.
Es gibt SQL-Anweisungen, die von SQL Anywhere unterstützt werden und lediglich Teil des einen und nicht des anderen Dialekts sind. Die beiden Dialekte können innerhalb einer Prozedur, eines Triggers oder eines Batches nicht gemischt werden. SQL Anywhere unterstützt z.B. die folgenden Anweisungen, jedoch nur als Teil des Transact-SQL-Dialekts:
Transact-SQL-Steueranweisungen IF und WHILE
Transact-SQL-Anweisung EXECUTE
Transact-SQL-Anweisungen CREATE PROCEDURE und CREATE TRIGGER
Transact-SQL-Anweisung BEGIN TRANSACTION
SQL-Anweisungen, die nicht durch Semikolons getrennt werden, sind Teil einer Transact-SQL-Prozedur oder eines Transact-SQL-Batches.
Adaptive Server Enterprise unterstützt nicht die folgenden Anweisungen:
Steueranweisungen CASE, LOOP und FOR
SQL Anywhere-Versionen von IF und WHILE
CALL-Anweisung
SQL Anywhere-Versionen der Anweisungen CREATE PROCEDURE, CREATE FUNCTION und CREATE TRIGGER
SQL-Anweisungen, getrennt durch Semikolons
Die beiden Dialekte können nicht innerhalb einer Prozedur, eines Triggers oder eines Batches gemischt werden. Das bedeutet:
Sie können für Transact-SQL geltende Anweisungen in einem Batch, einer Prozedur oder einem Trigger mit Anweisungen kombinieren, die Teil beider Dialekte sind.
Sie können von Adaptive Server Enterprise nicht unterstützte Anweisungen zusammen mit Anweisungen, die von beiden Servern unterstützt werden, in einem Batch, einer Prozedur oder einem Trigger verwenden.
Sie können nur für Transact-SQL geltende Anweisungen nicht zusammen mit nur für SQL Anywhere geltenden Anweisungen in einem Batch, einer Prozedur oder einem Trigger verwenden.
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 |