क्या जेडीबीसी मेटाडेटा का उपयोग कर किसी भी डीबीएमएस द्वारा समर्थित कुल कार्यों की सूची लाने या किसी भी डीबीएमएस विशिष्ट क्वेरी को चलाने का कोई तरीका है?कुल कार्यों की सूची
उत्तर
आपकी पोस्ट में कई डीबी टैग हैं, और प्रत्येक में सिस्टम कैटलॉग और/या एक सूचना स्कीमा है जो आपको प्रक्रियाओं की सूची बताएगी। क्वेरी के लिए कौन सी तालिका/दृश्य डीबी इंजन से अगले तक अलग होगा, हालांकि ... (उदाहरण के लिए, पोस्टग्रेज़ में आप pg_proc और pg_aggregate में शामिल होंगे, क्योंकि info_schema.routines आपको बताएंगे कि कौन सी प्रोसेस एकत्रित नहीं हैं।)
आमतौर पर यह मानना सुरक्षित है कि सामान्य कुल कार्य (sum()
, count()
, avg()
...) सभी डेटाबेस कार्यान्वयन में मौजूद हैं।
एकमात्र अपवाद मैं के बारे में पता कर रहा हूँ Postgres, जो का समर्थन नहीं करता है any()
/some()
कारण ambiguity in the syntax रहे हैं:
SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;
एसक्यूएल सर्वर आप XML जो स्थापना निर्देशिका में है क्वेरी कर सकता है पर:
DECLARE @xml XML
SELECT @xml = x.y
FROM OPENROWSET(BULK 'C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\SqlToolsData\1033\SQLCommonObjects.xml', SINGLE_BLOB) x(y)
;WITH XMLNAMESPACES('http://tempuri.org/SqlCommonObjects.xsd' AS ns)
SELECT
Category.Name.value('ns:DisplayName[1]', 'VARCHAR(MAX)') [Category],
[Function].Name.value('ns:Name[1]', 'VARCHAR(MAX)') [Function],
[Function].Name.query('for $p in ns:Parameters/ns:Parameter return
concat($p/ns:Name[1],",")').value('.', 'VARCHAR(MAX)') Parameters
FROM @xml.nodes('//ns:Category[ns:DisplayName="Aggregate Functions"]')
AS Category(Name)
CROSS APPLY Category.Name.nodes('ns:Objects/ns:Function') [Function](Name)
बल्क स्टेटमेंट के बाद आपको अपना फ़ोल्डर (अंतर मुख्य रूप से प्रोग्राम फ़ाइलें "और" प्रोग्राम_फाइल (x86) "और एसक्यूएल सर्वर संस्करण (100 उदाहरण में 2008 है) देना चाहिए
कुछ भी पूर्ण नहीं है, क्योंकि यह जेडीबीसी स्पेक का हिस्सा नहीं है। यदि आप नहीं जानते कि आप रनटाइम पर किस डेटाबेस इंजन का उपयोग कर रहे हैं, तो आपकी सबसे अच्छी शर्त डेटाबेस में एक टेस्ट क्वेरी सबमिट करना है और यह जांचना है कि किसी भी समेकित फ़ंक्शन का उपयोग करने से पहले यह विफल रहा है या नहीं।
बहुत से लोग सभी को धन्यवाद, मेरे आवेदन को अंतर्निहित डीबीएमएस द्वारा समर्थित कुल कार्यों की सूची प्रकाशित करने की आवश्यकता है। मैं एसक्यूएल-सर्वर, ऑरैकल, सिबेस और माइस्क्ल के लिए ऐसी विधियों की तलाश में हूं। यह जेडीबीसी स्पेक का हिस्सा नहीं है, इसलिए मैं इन डीबीएस के लिए व्यक्तिगत प्रश्नों की तलाश में हूं। अंतिम विकल्प यह सूची सभी डीबीएस के लिए कॉन्फ़िगरेशन फ़ाइल में रखना होगा। –