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?