Ich glaube, diese Frage ist sehr trivial. Ich kann keine Zeilen innerhalb einer von mir definierten gespeicherten Prozedur oder innerhalb einer UDF auswählen. Hier ist die Syntax, die ich verwenden:Wie "Auswählen" in einer gespeicherten Prozedur oder einem UDF in DB2 LUW?
Create Or Replace Procedure GenerateSequence(
In InternalUnitID SmallInt,
In ObjectTypeID SmallInt)
Language SQL
Dynamic Result Sets 1
Not Deterministic
No External Action
Modifies SQL Data
Commit On Return Yes
Begin
Select Number
From Sequence
Where InternalUnit=InternalUnitID
And ObjectType=ObjectTypeID;
End
Wenn ich versuche, das oben beschriebene Verfahren zu erstellen (mit der Definition in einer SQL-Datei setzen und es läuft). Ich erhalte folgende Fehlermeldung: DB21034E Der Befehl wurde als SQL-Anweisung verarbeitet, da es sich nicht um einen gültigen Befehlszeilenprozessorbefehl handelte. Während der SQL-Verarbeitung zurückgegeben:
SQL0104N An unexpected token "Select Number From Sequence Where Intern" was
found following "n Return Yes Begin ". Expected tokens may include: "".
LINE NUMBER=21. SQLSTATE=42601
Jeder Hinweis, was kann die Ursache für dieses Problem sein?
Meine Umgebung ist DB2 10.5 Express unter Windows.
Werfen Sie einen Blick in das Handbuch. https://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0008329.html?pos=2 Um eine Ergebnismenge zurückzugeben, deklarieren Sie einfach einen Cursor und öffnen Sie ihn vor dem Verlassen der Prozedur. – Charles
Nummer und Reihenfolge sind beide reservierte Wörter – Hogan
Der schwierigste Teil der Erstellung eines SP für mich war immer die Befehlszeilenoptionen für die Verwendung eines anderen Batch-Terminator von ';' zu bekommen, so dass ich ';' in meinem SP-Code einschließen kann. – Hogan