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; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |