2016-12-05 9 views
5

मैं जहाँ मैं आंतरिक रूप से कहा जाता है "ColorByte" क्षेत्र अद्यतन करने की आवश्यकता मेरी डेटाबेस में एक बड़ा टेबल है। इस क्षेत्र की गणना आरजीबी मूल्यों से की जाती है और प्राथमिक रूप से एक्सेल-वीबीए स्क्रिप्ट्स द्वारा उपयोग की जाती है लेकिन WinForms C# अनुप्रयोगों में भी होती है। यह एक पूर्णांक मान का प्रतिनिधित्व करता है जो एक विशिष्ट रंग का प्रतिनिधित्व करता है।पीएल/एसक्यूएल में आरजीबी-वैल्यू कैसे बनाएं?

यह VBA (सिर्फ स्पष्टीकरण के लिए कोई काम कर कोड) में निम्नलिखित के रूप में काम करता है:

r = 5 
g = 50 
b = 200 

colorByte = RGB(r,g,b) 

आरजीबी-फ़ंक्शन here बारे में अधिक पढ़ें।

अब मुझे हमारी कंपनी विशिष्ट डेटा से बेहतर आरजीबी-वैल्यू बनने के लिए एक जटिल गणना योजना मिली है, जो हमारी शोध टीम के सदस्य द्वारा वीबीए में विकसित की गई है। मुझे अपनी बड़ी तालिका को आसानी से अपडेट करने और "colorByte" फ़ील्ड को सही करने के लिए डेटाबेस पर इस कैल्श्यूशन को परिभाषित करना होगा। सटीक गणना महत्वपूर्ण नहीं है क्योंकि यह सामग्री काम करती है लेकिन:

क्या वीबीए RGB(r, g, b) फ़ंक्शन है जो मैं अपने कार्य को पूरा करने के लिए पीएल/एसक्यूएल में उपयोग कर सकता हूं?

या क्या कोई जानता है कि यह कार्य आंतरिक रूप से क्या करता है, ताकि मैं पीएल/एसक्यूएल में इसे फिर से परिभाषित कर सकूं?

उत्तर

4

नहीं, वहाँ कोई ओरेकल में निर्मित RGB() समारोह है, लेकिन formula काफी सरल

colorByte = red + (green * 256) + (blue * 256 * 256) 

तो समारोह इस

create or replace function rgb(
    p_red in number, 
    p_green in number, 
    p_blue in number 
) return number 
is 
begin 
    return p_red + (p_green * 256) + (p_blue * 256 * 256); 
end; 

टेस्ट मामले की तरह लग सकता है:

select rgb(5, 50, 200) as color_value 
    from dual 

COLOR_VALUE 
----------- 
    13120005 

1 row selected. 
2

मुझे लगता है कि RGB(r,g,b) बस करता

RGB(r,g,b) = 256 * 256 * r + 256 * g + b 

शायद यह दूसरी तरह के आसपास है (यानी r + 256*g + 256*256*b) है, लेकिन यह मुझे यकीन है कि आप साधारण कोशिश और त्रुटि के द्वारा इस जानकारी प्राप्त कर सकते हैं। पीएल/एसक्यूएल में इसे पुनर्निर्माण करने में कोई समस्या नहीं होनी चाहिए।

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