2012-07-26 13 views
5

मैं यह निर्धारित करने की कोशिश कर रहा हूं कि यह कोड क्या कर रहा है (ओरेकल एसक्यूएल) - विशेष रूप से खंड में विस्मयादिबोधक चिह्न पर हस्ताक्षर करें।@ क्या करता है! मतलब से एक स्टेटमेंट

INSERT INTO "LOCATIONS" "A1" 
      ("LOCATION_ID", 
      "SEQUENCE", 
      "POINT_TYPE") 
SELECT "A2"."LOCATION_ID", 
     "A2"."SEQUENCE", 
     "A2"."LOCATION_TYPE", 
     "A2"."POINT_TYPE" 
FROM "LOCATIONS"@! "A2" 
WHERE NOT EXISTS (SELECT 1 
        FROM "LOCATIONS" "A3" 
        WHERE "A3"."LOCATION_ID" = "A2"."LOCATION_ID") 
+1

एफवाईआई, @ प्रतीक वास्तव में "एट" या "टोपी" कहा जाता है। Ampersand यह है: और। – Matt

+1

आप 4 कॉलम में 4 कॉलम सम्मिलित नहीं कर सकते हैं। "@" आमतौर पर एक डेटाबेस लिंक का मतलब है। लेकिन मैंने इसे कभी "!" के साथ कभी नहीं देखा है – winkbrace

+3

'! 'डेटाबेस लिंक नाम होना चाहिए, लेकिन यह एक कानूनी चरित्र नहीं है जिसमें एक होना चाहिए। शायद यह एक शेल स्क्रिप्ट से चलाना माना जाता है जो वास्तविक लिंक नाम के लिए '!' का वास्तविक समय प्रतिस्थापन करता है, हालांकि यह एक अजीब विकल्प होगा; और @BazzPsychoNut के रूप में यह बताता है कि यह कॉलम विसंगति पर किसी भी तरह विफल हो जाएगा। '!' का एकमात्र उपयोग ओरेकल में मुझे पता है ['soundex' ऑपरेटर] (http://docs.oracle.com/cd/E11882_01/text.112/e24436/cqoper.htm#sthref1108) , जो स्पष्ट रूप से यहां मामला नहीं है। –

उत्तर

-1

मुझे नहीं लगता कि यह मान्य एसक्यूएल है। यह सुनिश्चित करने के लिए अपना कोड जांचें कि एसक्यूएल निष्पादित होने से पहले कुछ भी नहीं बदला गया है - विशेष रूप से यह देखने के लिए जांचें कि डेटाबेस लिंक का नाम ! के लिए प्रतिस्थापित किया जा रहा है या नहीं।

आप यह निर्धारित नहीं कर सकते क्या निष्पादित किया जा रहा है, तो आप डेटाबेस

+0

यह कोड ग्रिड कंट्रोल में निगरानी वाले SQL निष्पादन से खींचा गया है (कई पंक्तियों को हटा दिया गया है - यही कारण है कि यह केवल 3 सम्मिलित कॉलम के साथ 4 का चयन करता है)। – user739866

5

यह मूल डेटाबेस, जहां क्वेरी निष्पादित किया जाता है करने के लिए एक रिवर्स डेटाबेस कड़ी है पर एक निशान डाल सकता है।

INSERT INTO [email protected]_db 
      ("LOCATION_ID", 
      "SEQUENCE", 
      "POINT_TYPE") 
SELECT "A2"."LOCATION_ID", 
     "A2"."SEQUENCE", 
     "A2"."POINT_TYPE" 
FROM "LOCATIONS" A2 
WHERE NOT EXISTS (SELECT 1 
        FROM [email protected]_db A3 
        WHERE "A3"."LOCATION_ID" = "A2"."LOCATION_ID"); 

इस तरह सभी दूरस्थ तालिकाओं स्थानीय हो जाते हैं, और स्थानीय तालिकाओं के साथ दूरदराज के हो जाते हैं: मूल प्रश्न की तरह लग रहे चाहिए "@!"।

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