Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

IN खंड के लिए पैरामीटर के साथ Oracle संग्रहीत कार्यविधि

सीएसवी का उपयोग करना शायद सबसे आसान तरीका है, यह मानते हुए कि आप 100% निश्चित हो सकते हैं कि आपके तत्वों में स्वयं तार नहीं होंगे।

एक वैकल्पिक, और शायद अधिक मजबूत, ऐसा करने का तरीका स्ट्रिंग की तालिका के रूप में एक कस्टम प्रकार बनाना है। मान लीजिए कि आपके तार 100 वर्णों से अधिक लंबे नहीं थे, तो आप यह कर सकते थे:

CREATE TYPE string_table AS TABLE OF varchar2(100);

फिर आप इस प्रकार के एक चर को अपनी संग्रहीत प्रक्रिया में पास कर सकते हैं और इसे सीधे संदर्भित कर सकते हैं। आपके मामले में, कुछ इस तरह:

FUNCTION EXECUTE_UPDATE(
    identifierList string_table,
    value int)
RETURN int
IS
BEGIN

    [...other stuff...]

    update table1 set col1 = col1 - value 
    where id in (select column_value from table(identifierList));

    RETURN SQL%ROWCOUNT;

END

table() फ़ंक्शन आपके कस्टम प्रकार को एक एकल कॉलम "COLUMN_VALUE" के साथ एक तालिका में बदल देता है, जिसे आप फिर किसी अन्य तालिका की तरह मान सकते हैं (इसलिए शामिल हों या, इस मामले में, उप-चयन करें)।

इसकी खूबी यह है कि Oracle आपके लिए एक कंस्ट्रक्टर बनाएगा, इसलिए अपनी संग्रहीत प्रक्रिया को कॉल करते समय आप बस लिख सकते हैं:

execute_update(string_table('foo','bar','baz'), 32);

मुझे लगता है कि आप सी # से प्रोग्रामेटिक रूप से इस कमांड को बनाने का काम संभाल सकते हैं।

एक तरफ, मेरी कंपनी में हमारे पास स्ट्रिंग्स, डबल्स, इनट्स आदि की सूचियों के लिए मानक के रूप में परिभाषित कई कस्टम प्रकार हैं। हम इन प्रकारों से सीधे संबंधित जावा ऑब्जेक्ट्स में मैप करने में सक्षम होने के लिए Oracle JPublisher का भी उपयोग करते हैं। मैंने चारों ओर एक त्वरित नज़र डाली लेकिन मैं सी # के लिए कोई प्रत्यक्ष समकक्ष नहीं देख सका। बस मैंने सोचा कि अगर जावा देवता इस प्रश्न पर आते हैं तो मैं इसका उल्लेख करूंगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL के साथ कुशलता से बड़ी मात्रा में डेटा डालें

  2. ओरेकल में मिलीसेकंड के साथ टाइमस्टैम्प को आज तक कैसे बदलें?

  3. SQL NULL में NULL से मेल क्यों नहीं हो सकता है?

  4. एकाधिक सम्मिलित SQL oracle

  5. JDBC के साथ Oracle डेटाबेस से जुड़ने के लिए URL स्ट्रिंग प्रारूप