2010-10-11 21 views
6

में मौजूद होने का सिंटेक्स तालिका तालिका मौजूद होने पर अनुवर्ती क्वेरी तालिका को छोड़ देती है लेकिन यह आईबीएम डीबी 2 के लिए काम नहीं कर रही है।आईबीएम डीबी 2

शुरू परमाणु

अगर (मौजूद है (

का चयन करें 1 SYSIBM.SYSTABLES से जहां नाम = 'EMAIL' और प्रकार = 'टी' और निर्माता = 'schema1' )) तो ड्रॉप टेबल ईमेल; अंत में; अंत

वही है यदि सिंटैक्स एक्सिसिट करता है तो यदि टेबल ड्रॉप स्टेटमेंट के बजाय मेरे पास डीएमएल स्टेटमेंट है तो वही होगा। इस पर किसी भी मदद की सराहना की है

अद्यतन 1: मैंने पढ़ा है कि आप प्रारंभिक परमाणु ब्लॉक के भीतर डीडीएल स्टेटमेंट नहीं चला सकते हैं इसलिए मेरा पहला कथन विफल रहता है लेकिन दूसरा ठीक हो जाता है।

+0

क्या आपको एक त्रुटि संदेश मिल रहा है? यदि हां, तो क्या आप इसे पोस्ट कर सकते हैं? –

उत्तर

7

तरह से मैं इसे इस प्रकार है किया

Begin atomic 

    if(exists(SELECT 1 
       FROM SYSIBM.SYSTABLES 
       WHERE NAME='EMAIL' AND TYPE='T' AND creator = 'schema1' 
      ) 
    ) 
    then customStoredproc('drop table EMAIL'); 

    end if; 

End 

मेरे customStoredProc सिर्फ एक stmt तत्काल @dynsql पर अमल होता है;

1

आप सही हैं कि डीबी 2 एक परमाणु एसक्यूएल ब्लॉक के भीतर डीडीएल को प्रतिबंधित करता है। आईबीएम ने एक मुफ्त ऐड-ऑन प्रक्रिया जारी की है जिसे db2perf_quiet_drop कहा जाता है जो आपके इच्छित तरीके से काम करता है।

संबंधित मुद्दे