2009-05-26 4 views
2

Ich habe eine DB2-Abfrage geschrieben Folgendes zu tun:DB2 entspricht dem GO von SQL?

  • erstellen temporäre Tabelle
  • Wählen Sie aus einem Monster Abfrage/Einfügen in die temporäre Tabelle
  • Wählen Sie aus der temporären Tabelle/Löschen von alten Tabelle
  • Wählen Sie aus der temporären Tabelle/einfügen in eine andere Tabelle

In MSSQL, ich bin die Befehle nacheinander als eine lange Abfrage auszuführen erlaubt. Gelingt dies nicht, kann ich sie mit 'GO'-Befehlen abgrenzen. Wenn ich dies in DB2 versuchen, erhalte ich die Fehlermeldung:

DB2CLI.DLL: ERROR [42601] [IBM][CLI Driver][DB2] SQL0199N The use of the reserved 
word "GO" following "" is not valid. Expected tokens may include: "". 
SQLSTATE=42601 

Was kann ich diese Anweisungen außerhalb des Bereichs ohne die temporäre Tabelle zu begrenzen verwenden gehen?

Antwort

4

GO ist etwas, das in MSSQL Studio verwendet wird, ich meine eigene app für upates in Live- und verwenden "GO", um die Aussagen auseinander zu brechen läuft.

Unterstützt DB2 das Semikolon (;)? Dies ist ein Standardtrennzeichen in vielen SQL-Implementierungen.

+0

Das ist ein bisschen kompliziert in DB2 ist. Normalerweise ist das Standardtrennzeichen das Semikolon, in den Körpern gespeicherter Prozeduren ist jedoch das Trennzeichen immer ein Semikolon, während das Trennzeichen, das nach dem Befehl CREATE PROCUEDURE/was auch immer verwendet wird, etwas anderes sein muss. Sie können dieses Trennzeichen in der Umgebung überschreiben, von der aus Sie DB2 aufrufen. Traditionell wird \\ als "äußeres Trennzeichen" verwendet, Sie können jedoch auch jede andere Zeichenfolge verwenden. –

1

Ich würde versuchen, das, was Sie in BEGIN und END tun möchten, zu umbrechen, um den Bereich festzulegen.

GO ist kein SQL-Befehl, es ist nicht einmal ein TSQL-Befehl. Es ist eine Anweisung für den Parser. Ich kenne DB2 nicht, aber ich würde mir vorstellen, dass GO nicht notwendig ist.

From Devx.com Tips

Although GO is not a T-SQL statement, it is often used in T-SQL code and unless you know what it is it can be a mystery. So what is its purpose? Well, it causes all statements from the beginning of the script or the last GO statement (whichever is closer) to be compiled into one execution plan and sent to the server independent of any other batches.