Oracle सेटअप :
प्रकार बनाएं या बदलें BD_TB_STRUCT AS OBJECT( start_ts TIMESTAMP(3), end_ts TIMESTAMP(3), time_type NUMBER(19), अवधि NUMBER(12)) फाइनल;/क्रिएट या रिप्लेस प्रक्रिया मर्ज_1_bd_s , s2_bd_t में bd_tb_struct, r_bd_t OUT bd_tb_struct) IS p_start TIMESTAMP(3):=LEAST(s1_bd_t.start_ts, s2_bd_t.start_ts); p_end TIMESTAMP(3):=ग्रेटेस्ट(s1_bd_t.end_ts, s2_bd_t.end_ts);BEGIN r_bd_t:=new BD_TB_STRUCT(p_start, p_end, COALESCE(s1_bd_t. DATE_type, _t. p_start AS DATE ) ) * 24 * 60 * 60 );END;/
जावा SQLData क्लास :
आयात करें .sql.Timestamp;import java.time.LocalDateTime;import java.time.ZoneOffset;सार्वजनिक वर्ग BoundsSQL SQLData {सार्वजनिक स्थिर अंतिम स्ट्रिंग SQL_TYPE ="BD_TB_STRUCT" को लागू करता है; सार्वजनिक java.sql.Timestamp प्रारंभ; सार्वजनिक java.sql.Timestamp अंत; सार्वजनिक बिगइंटर प्रकार; सार्वजनिक BigInteger अवधि; पब्लिक बाउंड्सएसक्यूएल () { } पब्लिक बाउंड्सएसक्यूएल (फाइनल इंट ईयर, फाइनल इंट मंथ, फाइनल इंट डेऑफमोन्थ, फाइनल इंट ऑवर, फाइनल इंट मिनट, फाइनल इंट सेकेंड, फाइनल लॉन्ग ड्यूरेशन, फाइनल लॉन्ग टाइप) { फाइनल लॉन्ग एपोचसेकंड =लोकलडेटटाइम। वर्ष, माह, दिन का महीना, घंटा, मिनट, सेकंड)। this.start =नया टाइमस्टैम्प (युग सेकेंड * 1000); this.end =नया टाइमस्टैम्प ((युग सेकेंड + अवधि) * 1000); यह अवधि =BigInteger.valueOf (अवधि); this.type =BigInteger.valueOf (प्रकार); } @ ओवरराइड सार्वजनिक स्ट्रिंग getSQLTypeName() SQLException फेंकता है { SQL_TYPE लौटाएं; } @ ओवरराइड सार्वजनिक शून्य रीडएसक्यूएल (एसक्यूएल इनपुट स्ट्रीम, स्ट्रिंग टाइपनाम) एसक्यूएलएक्सप्शन फेंकता है {स्टार्ट =स्ट्रीम। रीडटाइमस्टैम्प (); अंत =स्ट्रीम.रीडटाइमस्टैम्प (); टाइप =स्ट्रीम.रीडबिगडिसीमल ()। टूबिगइंटर (); अवधि =stream.readBigDecimal ()। toBigInteger (); } @ ओवरराइड पब्लिक शून्य राइटएसक्यूएल (एसक्यूएलऑटपुट स्ट्रीम) एसक्यूएलएक्सप्शन फेंकता है {stream.writeTimestamp (शुरू); स्ट्रीम.राइटटाइमस्टैम्प (अंत); स्ट्रीम.राइटबिगडेसिमल (नया बिगडेसिमल (टाइप)); स्ट्रीम.राइटबिगडेसिमल (नया बिगडेसिमल (अवधि)); } @ ओवरराइड पब्लिक स्ट्रिंग टूस्ट्रिंग () {रिटर्न स्ट्रिंग।फॉर्मैट ("प्रारंभ:% s \ n समाप्ति:% s \ n अवधि:% s \ n टाइप:% s", प्रारंभ, समाप्ति, अवधि, प्रकार); }}जावा से संग्रहित प्रक्रिया को कॉल करें :
OracleCallableStatement#setObject(int, Object)
का उपयोग करके संग्रहीत कार्यविधि को कॉल करें पैरामीटर पास करने के लिए और कक्षा को एक प्रकार के मानचित्र में रखने के लिए और OracleCallableStatement#registerOutParameter(int, int, string)
का उपयोग करें और OracleCallableStatement#getObject(int)
मापदंडों को पुनः प्राप्त करने के लिए।
आउटपुट :
प्रारंभ:2019-01-01 00:00:00.0अंत:2019-01-01 00:00:15.0अवधि:15प्रकार:1