मेरे पास डीबी ए और डीबी बी है। संग्रहीत प्रक्रिया की शुरुआत में मैं B.mytable
से B.mytablebackup
तक सभी पंक्तियों का बैक अप लेना चाहता हूं। शेष संग्रहीत प्रक्रिया डीबी ए पर टेबल के खिलाफ चलती है (जो डेटा एकत्र करती है और इसे B.mytable
पर लिखती है)।एक अलग एसक्यूएल डीबी से तालिका के अस्तित्व की जांच कैसे करें?
तो मैं अगर B.mytablebackup
मौजूद
IF EXISTS(SELECT 1 FROM B.dbo.mytablebackup)
देखने के लिए जाँच और अगर यह होता है, संग्रहीत प्रक्रिया यदि यह मौजूद नहीं है यह एक
SELECT * INTO B..mytablebackup from B..mytable
करता है एक
INSERT INTO B..mytablebackup SELECT * FROM B..mytable
करता है
लेकिन जब मैं संग्रहीत प्रक्रिया निष्पादित करता हूं तो मुझे त्रुटि मिलती है
वहां पहले से ही एक वस्तु डेटाबेस
में 'mytablebackup' नाम मैं एक Print
बयान जोड़ा गया है और निष्पादन ले जा रहा है अगर की शाखा "मौजूद नहीं है" है।
मैं क्या गलत कर रहा हूं?
*** एसक्यूएल *** सिर्फ * स्ट्रक्चर्ड क्वेरी लैंग्वेज * है - कई डाटाबेस सिस्टम द्वारा प्रयुक्त भाषा है, लेकिन नहीं आ डेटाबेस उत्पाद ... बहुत सी बातें विक्रेता विशिष्ट हैं - तो हम वास्तव में करने की जरूरत है पता करें कि ** डेटाबेस सिस्टम ** (और कौन सा संस्करण) आप उपयोग कर रहे हैं (कृपया तदनुसार टैग अपडेट करें) .... –
@marc_s मुझे लगता है कि यह 'db.schema.tbl' प्रारूप – Kermit
पर आधारित MSSQL है 'अगर EXISTS (B.dbo.mytablebackup से 1 चुनें) '' mytablebackup' के भीतर कम से कम एक पंक्ति * जांचता है या नहीं। यह आपको नहीं बताता है कि तालिका स्वयं * मौजूद है (यदि तालिका मौजूद नहीं है, तो यह संकलन त्रुटि उत्पन्न करेगी) –