2016-11-21 1 views
-1

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.

+1

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

+0

Nummer und Reihenfolge sind beide reservierte Wörter – Hogan

+1

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

Antwort

Verwandte Themen