Anmelden

View Full Version : Stored Procedure



lorenzen
27-08-02, 08:56
Es soll ein Result Set an den Client übertragen werden.
Dafür möchte ich eine Stored Procedure nutzen.
Die Frage ist nun, welche SP-Art ist im Client/Server Betrieb denn am schnellsten?

1. Mit SPL oder
2. als externe, wie z. B. mit SQLRPGLE?

Hat jemand damit Erfahrung?

torsten
27-08-02, 10:08
Die Unterschiede waren bei uns marginal. Theoretisch sollte die 1. Variante schneller sein (generierter C - Code), wesentlicher ist aber die Qualität der verwendeten SQL Statements. Auf relativ kleinen und alten Maschinen sind in vielen Fällen beide Varianten langsamer als RPGLE Progamme mit 'klassischer' IO. (F-specs, chain, setll etc.)
RPGLE mit embedded SQL läßt sich einfacher debuggen als SPL.

Gruß

Torsten

lorenzen
27-08-02, 11:12
Hallo Torsten,
danke für die Antwort, der ich entnehme, dass du schon etwas Erfahrung mit dem Thema hast.
Ich habe nämlich noch ein ganz anderes Problem:
Trotz installierten ILE C Compiler unter V5.1 erhalte ich bei SPL-Generierung über OpsNav folgende Fehlermeldung:

SQL-Prozedur, -Funktion oder -Auslöser SP1 in LORENZEN wurde nicht erstellt.

Nachrichten-ID:SQL7032

Ursache . . . . .: SQL-Prozedur, -Funktion oder -Auslöser SP1 in LORENZEN wurde nicht erstellt. Einer der folgenden Fehler trat auf http://www.as400-forum.de/ubb/biggrin.gifas Produkt DB2 UDB ist nicht auf dem System vorhanden. SQL erfordert, dass DB2 UDB für AS/400 installiert ist, um SQL-Prozeduren, -Funktionen oder -Auslöser erstellen zu können.Die Umwandlung war nicht erfolgreich. SQL erstellt eine SQL-Prozedur, -Funktion oder einen SQL-Auslöser als ein C-Programm, das eingebettetes SQL enthält. Fehler, die während der anfänglichen Syntaanalyse der Anweisungen CREATE PROCEDURE, CREATE FUNCTION und CREATE TRIGGER nicht gefunden wurden, können während der Vorumwandlung gefunden werden.Fehlerbeseitigung: Sofern ILE C für AS/400 noch nicht installiert ist, dieses Produkt installieren. Sofern DB2 UDB für AS/400 noch nicht installiert ist, dieses Produkt installieren. Sofern OS/400 Option 13, System Openness Includes noch nicht installiert ist, dieses Produkt installieren. Trat ein Umwandlungsfehler auf, die Vorumwandlungsliste in QSYSPRT püfen.

Hast du vielleicht eine Idee, wo es fehlt?

Gruß Sven

[Dieser Beitrag wurde von lorenzen am 27. August 2002 editiert.]

torsten
27-08-02, 11:56
Hallo Sven,

leider muß wirklich das Lizenzprogramm

5722ST1 *COMPATIBLE DB2 Query Mgr and SQL DevKit installiert sein , um SP in der SPL
erstellen zu können. (nicht ganz billig)

Der ILE C Compiler ist dafür ab V5R1 nicht mehr erforderlich.

Gruß

Torsten

lorenzen
27-08-02, 12:51
Hallo Torsten,

5722ST1 *COMPATIBLE DB2 Query Mgr and SQL DevKit

ist installiert, ebenso wie:

5722WDS *COMPATIBLE Compiler - ILE C
5722WDS *COMPATIBLE Compiler - ILE C++
5722WDS *COMPATIBLE Compiler - ILE C *PRV
5722WDS *COMPATIBLE Compiler - ILE C++ *PRV

Ich glaube da mache ich irgend etwas anderes falsch.
Ich habe zum Test lediglich ein "Select * from Lib.File" im SPL Eingabefenster eingetragen.
In der Vorumwandlungsliste wird nun mitgeteilt das die Klausel INTO fehlt. Ich will aber gar keine Hostvariablen füllen (zumindest jetzt nicht), sondern lediglich ein Result Set erhalten.

Weißt du wie das geht?

Gruß Sven

torsten
27-08-02, 13:36
z.B.

BEGIN
DECLARE CURSE CURSOR WITH RETURN FOR
SELECT * FROM mylib.myTable
WHERE myCol = 'A' ;
OPEN CURSE ;
END

Gruß

Torsten

lorenzen
27-08-02, 14:59
Jawoll, das geht.
Ich habe mir inzwischen damit geholfen, das Statement in eine Quelldatei, inkl. dem ganzen CREATE PROCEDURE Geraffel, zu schreiben und dann mit RUNSQLSTM zu generieren.
Gefehlt hat natürlich der Cursor.

Vielen Dank für deine Hilfe.

Gruß Sven