2009-12-05 15 views
6

मेरे पास ओरेकल में एक सारणी है जो बीएलओबी क्षेत्र में बाइट एरे के रूप में फाइलों को स्टोर करती है। मैं चाहता हूं कि मेरा क्लाइंट संग्रहित फ़ाइल को छोटे हिस्सों में डाउनलोड करने में सक्षम हो (जैसा कि पूरी चीज को एक साथ में डाउनलोड करने के विपरीत है) तो मैं एक प्रगति पट्टी प्रदर्शित कर सकता हूं।मैं ओरेकल में बीएलओबी क्षेत्र का हिस्सा कैसे चुनूं?

मैं ओरेकल क्वेरी कैसे लिख सकता हूं जो बीएलओबी फ़ील्ड की सामग्री के केवल भाग पुनर्प्राप्त करता है? मुझे लगता है यह कुछ इस तरह होगा:

SELECT PARTOF(BLOBFIELD, 1000, 2000) AS CHUNK FROM tbl WHERE ID = 1 

अगर मैं BLOBFIELD से 1000 बाइट्स बाइट 2000

पर शुरू एक माध्यमिक सवाल के रूप में, वहाँ इस के साथ किसी भी प्रदर्शन के मुद्दों कर रहे हैं प्राप्त करना चाहता था? यदि ओरेकल को पूरे बीएलओबी फ़ील्ड को इसके हिस्से को वापस करने के लिए स्मृति में लोड करना है, तो यह एक बहुत अच्छा विचार नहीं होगा।

+0

मैं इस मुद्दे को पहले किसी अन्य तरीके से हल करने का प्रयास करने का सुझाव दूंगा। आप अपने ओरेकल डीबी से बात करने के लिए किस भाषा/ढांचे आदि का उपयोग कर रहे हैं? मैं सोच रहा हूं कि आप ओरेकल की क्षमताओं के बाहर एक प्रगति बार रिपोर्ट प्राप्त कर सकते हैं। –

+0

मेरे ग्राहक विंडोज मोबाइल डिवाइस हैं जो एएसपी.नेट वेब सेवा को बुलाते हैं। काम करने के लिए प्रगति पट्टी के लिए, ग्राहकों को वेब सेवा पर कई कॉल करने में सक्षम होना चाहिए, जिनमें से प्रत्येक समग्र फ़ाइल का एक टुकड़ा देता है। ऐसा करने के लिए, मुझे एक प्रश्न लिखने में सक्षम होना चाहिए जो केवल एक ब्लॉब फ़ील्ड का एक टुकड़ा देता है। – MusiGenesis

+0

क्या आपने फ़ाइल सिस्टम में फ़ाइल संग्रहीत की थी, आपको ऐसी कोई समस्या नहीं होगी। –

उत्तर

6

क्या आप DBMS_LOB.READ (lob_loc, amount, offset, buffer) का उपयोग कर सकते हैं?

+1

'DBMS_LOB.SUBSTR' की आंखों पर भी बुरा है, लेकिन मुझे यह वास्तव में चाहिए, लेकिन मुझे यह आपके लिंक में मिला, इसलिए आपको चेक मिल गया। धन्यवाद। – MusiGenesis

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