2009-05-26 5 views
2

J'ai écrit une requête DB2 pour effectuer les opérations suivantes:DB2 Equivalent à SQL's GO?

  • Créer une table temporaire
  • Sélectionnez à partir d'une requête de monstre/insérer dans la table temporaire
  • Sélectionnez dans la table temporaire/supprimer de vieille table
  • Sélectionnez dans la table temporaire/insérer dans une autre table

en MSSQL, je suis autorisé à exécuter les commandes les unes après les autres comme une requête longue. A défaut, je peux les délimiter avec les commandes 'GO'. Lorsque je tente cela dans DB2, je reçois l'erreur:

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 

Que puis-je utiliser pour délimiter ces instructions sans la table temporaire allant hors de portée?

Répondre

4

GO est quelque chose qui est utilisé dans MSSQL studio, j'ai ma propre application pour exécuter upates en live et le « GO » pour briser les déclarations en dehors.

DB2 prend-il en charge le point-virgule (;)? C'est un délimiteur standard dans de nombreuses implémentations SQL.

+0

C'est un peu compliqué dans DB2. Normalement, le délimiteur par défaut est le point-virgule, cependant, dans les corps des procédures stockées et al, le délimiteur est toujours un point-virgule tandis que le délimiteur utilisé _after_ la commande CREATE PROCUEDURE/whatever doit être quelque chose d'autre. Vous pouvez remplacer ce délimiteur dans l'environnement d'où vous appelez DB2. Traditionnellement, \\ est utilisé comme "délimiteur externe" mais vous pouvez utiliser n'importe quelle autre chaîne. –

1

J'essaierais d'emballer ce que vous cherchez à faire dans BEGIN et END pour définir la portée. GO n'est pas une commande SQL, ce n'est même pas une commande TSQL.

GO n'est pas une commande SQL, ce n'est même pas une commande TSQL. C'est une instruction pour l'analyseur. Je ne connais pas DB2, mais j'imagine que GO n'est pas nécessaire.

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.