La requête suivante tombe une table si la table existe mais cela ne semble pas fonctionner pour IBM DB2.
Begin atomic if( exists( SELECT 1 FROM SYSIBM.SYSTABLES WHERE NAME='EMAIL' AND TYPE='T' AND creator = 'schema1' )) then drop table EMAIL; end if; End
3 Réponses :
Vous avez raison que DB2 interdit à DDL dans un bloc SQL atomique. IBM a publié une procédure complémentaire gratuite appelée db2perf_quiet_drop qui fonctionne comme vous le souhaitez. P>
La façon dont je l'ai fait est comme suit My CustomStoredProc vient d'exécuter immédiatement @dynsql; p> p>
In case if you looking for embedded SQL: Exec SQL update Table1 set TabCol1 ='New Value' where Table1KeyField1 =:Table1KeyValue1 and Table1KeyField2 =:Table1KeyValue2 and Exists ( select '1' from Table2 where Table2KeyField1 =:Table2KeyValue1 and Table2KeyField2 =:Table2KeyValue2 ) ;
Cela ne semble pas répondre à la question de la puissance
Le script met à jour le tableau1 Si l'enregistrement existe dans le tableau2 sur la base de la clause. Je l'ai intégré dans mon code RPG et j'ai fonctionné. Vous pouvez exécuter ci-dessous le script et ajuster votre en conséquence ou m'envoyer votre script et je vais le réparer pour vous: Sélectionnez «1» comme true de Sysibm / SysDamy1 où existe (sélectionnez * à partir de sysibm / systypinfo où Type_Name = 'Integer');
Obtenez-vous un message d'erreur? Si oui, pouvez-vous poster cela?