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

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Abfragen optimieren und ausführen » Semantische Abfragentransformation

 

Inlining von einfachen Systemprozeduren

Eine Systemprozedur, die als eine einzige SELECT-Anweisung im Hauptteil definiert ist, wird manchmal inline gesetzt, wenn sie in der FROM-Klausel einer Abfrage aufgerufen wird. Das heißt, dass die Abfrage umgeschrieben wird, um mit der ursprünglichen Abfrage äquivalent zu sein, jedoch ohne Einbeziehung der Prozedurdefinition. Wenn eine Prozedur inline ist, wird sie als abgeleitete Tabelle umgeschrieben. Eine Prozedur wird niemals inline gesetzt, wenn sie Standardargumente verwendet oder etwas Anderes als eine einzige SELECT-Anweisung im Hauptteil enthält.

Beispiel: Sie erstellen die folgenden Prozedur:

CREATE PROCEDURE Test1( arg1 INT )
 BEGIN
  SELECT * FROM Employees WHERE EmployeeID=arg1
 END;

Nun rufen Sie die Prozedur in einer FROM-Klausel einer Abfrage folgendermaßen auf:

SELECT * FROM Test1( 200 );

Der Datenbankserver könnte die Abfrage folgendermaßen umschreiben:

SELECT * FROM ( SELECT * FROM Employees WHERE EmployeeID=CAST( 200 AS INT ) ) AS Test1;
 Siehe auch