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

कॉल संग्रहीत प्रक्रिया जिसमें अजगर में कॉलप्रोक का उपयोग करके रिकॉर्ड का संग्रह होता है

आप सीधे collections.namedtuple . का उपयोग नहीं कर सकते हैं Oracle ऑब्जेक्ट प्रकार के रूप में।

मैंने नीचे Oracle Database 12c Enterprise Edition रिलीज़ 12.2.0.1.0 पर कोशिश की Cx-Oracle-7.0.0 . के साथ और पायथन 3.6.4 और यह मेरे लिए काम करता है।

प्रकार बनाएं

CREATE OR REPLACE TYPE object_tag_rec AS OBJECT (
     tag_type       VARCHAR2(1),
     tag_category   VARCHAR2(100),
     tag_key        VARCHAR2(250),
     tag_value      VARCHAR2(250),
     created_by     VARCHAR2(50)
);
/

संग्रह बनाएं

CREATE OR REPLACE TYPE object_tag_tbl is TABLE OF object_tag_rec;
/

प्रक्रिया बनाएं

CREATE OR REPLACE procedure  sp_add_object_tags(
pi_account_id               IN  INT,
pi_object_id                IN  INT,
pi_all_tags_identified      IN  VARCHAR2,
pi_object_tag_tbl           IN  object_tag_tbl,
po_error_code               OUT NUMBER,
po_error_message            OUT VARCHAR2 )
AS 
BEGIN

   po_error_code    := 0;
   po_error_message := 'NO ERRORS';
END;
/

कोड

import cx_Oracle
conn = cx_Oracle.connect('user/[email protected]//localhost:1521/dbname')
cur = conn.cursor()

recordTypeObj = conn.gettype("HR.OBJECT_TAG_REC") #mind the cases
tableTypeObj  = conn.gettype("HR.OBJECT_TAG_TBL")
params = tableTypeObj.newobject()

rec = recordTypeObj.newobject()
(rec.TAG_TYPE,rec.TAG_CATEGORY,rec.TAG_KEY,rec.TAG_VALUE,rec.CREATED_BY) = ("S","person","person","1","abc")  
#mind the cases for attributes.

po_error_code    = cur.var(cx_Oracle.NUMBER)
po_error_message = cur.var(cx_Oracle.STRING)

params.append(rec)
cur.callproc('dbms_output.enable')
cur.callproc('hr.sp_add_object_tags', [1234, 5678, 'N', params, po_error_code, po_error_message])

print (po_error_code.getvalue(),po_error_message.getvalue())

निष्पादन

$python pass_obj.py
0.0 NO ERRORS



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संपूर्ण संग्रहीत प्रक्रिया के लिए व्याख्या योजना कैसे उत्पन्न करें

  2. पीएल/एसक्यूएल संग्रहित प्रक्रिया में एक कस्टम सेट कैसे वापस करें

  3. Oracle का JDBC क्वेरी टाइमआउट कैसे कार्यान्वित किया जाता है?

  4. ओरेकल एसक्यूएल:लापता कीवर्ड

  5. Oracle MERGE:केवल NOT MATCHED ट्रिगर होता है