Wiedergeben mehrerer Resultsets
Wenn Sie eine gespeicherte Prozedur ausführen, die die Anweisungen SELECT der systemeigenen Serversyntax enthält, wird jedes Resultset an einen gesonderten Visual FoxPro-Cursor zurückgegeben. Mit Hilfe dieser Cursor können Sie Werte oder Parameter von einer auf dem Server gespeicherten Prozedur an den Visual FoxPro-Client zurückgeben.
So geben Sie mehrere Resultsets zurück
- Wählen Sie unter Verwendung der SQLEXEC( )-Funktion mehrere Resultsets aus, und verwenden Sie dabei die systemeigene Serversyntax.
Zum Beispiel wird durch nachfolgendem Code eine auf einem Server gespeicherte Prozedur my_procedure
erstellt und ausgeführt, die drei Visual FoxPro-Cursor zurückgibt: sqlresult
, sqlresult1
und sqlresult2
:
=SQLEXEC(nConnectionHandle,'create procedure my_procedure as ;
select * from sales; select * from authors;
select * from titles')
=SQLEXEC(nConnectionHandle,'execute my_procedure')
So verarbeitet der Server Resultsets und Fehler
Da der Server jede gespeicherte Prozedur kompiliert, wenn Sie sie erstellen, werden Ihnen alle Server-Syntaxfehler während der Erstellung gemeldet. Wenn Sie die gespeicherte Prozedur ausführen, führt der Server die kompilierten SQL-Anweisungen (wie in einem Visual FoxPro-Programm) sequentiell aus, und Visual FoxPro ruft jedes Resultset jeder SQL-Anweisung der gespeicherten Prozedur getrennt, in der Reihenfolge wie sie ausgeführt werden, ab.
Resultsets und Fehler werden in der Reihenfolge zurückgegeben, in der sie empfangen wurden, und die Verarbeitung wird beendet, wenn ein Fehler festgestellt wird. Wenn beispielsweise ein Laufzeitfehler auftritt, während der Server die dritte Anweisung in einer gespeicherten Prozedur mit vier Anweisungen ausführt, erhalten Sie die ersten beiden Resultsets und dann den Fehler, der während der Verarbeitung des dritten Resultsets auftrat. Die Ausführung wird beendet, sobald der Fehler zurückgegeben wurde; das vierte Resultset wird nicht mehr abgerufen. Mit Hilfe der Funktion AERROR( ) erhalten Sie Informationen über den zuletzt aufgetretenen Fehler.
Anmerkung Auf Servern gespeicherte Prozeduren können Sie in Visual FoxPro nur mit Hilfe von Visual FoxPro SQL Pass-Through-Funktionen ausführen. Ansichten unterstützen auf Servern gespeicherte Prozeduren nicht, weil jede Ansicht eine explizite SQL-Anweisung SELECT in ihrer SQL-Definition enthält.
Übergeben einer SQL-Anweisung an eine Datenquelle
Mit Hilfe der SQLEXEC( )-Funktion können Sie eine SQL-Anweisung an eine Datenquelle senden, ohne dass die SQL-Anweisung von Visual FoxPro ausgewertet wird. Im einfachsten Fall wird jede Zeichenfolge, die Sie in den zweiten Parameter der SQLEXEC( )-Funktion einfügen, an die jeweilige Datenquelle gesendet, ohne vorher interpretiert zu werden. Damit können Sie jede beliebige Anweisung ausführen, die in der SQL-Syntax Ihrer Datenquelle vorliegt.
Außerdem können die SQLEXEC( )-Funktion verwenden, um eine parametrisierte Abfrage zu erstellen oder ODBC-Erweiterungen für SQL an eine Datenquelle zu übergeben.
Siehe auch
Zugriff auf gespeicherte Prozeduren auf Servern mit Hilfe von SQL Pass-Through-Funktionen | Erstellen einer parametrisierten Abfrage | Verwenden der SQL Pass-Through-Technologie | Implementieren einer Client/Server-Anwendung | Entwurf von Client/Server-Anwendungen | Upsizing von Visual FoxPro-Datenbanken | Erstellen von Ansichten