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

Stroredprocedure निष्पादित करते समय त्रुटि आ रही है

जैसा कि निकोलस करस्नोव कहते हैं, प्रक्रिया घोषणा से मेल खाने के लिए आपको कॉल में तर्कों की आवश्यकता है। इस मामले में आपके पास एक OUT है पैरामीटर, इसलिए आपको उस डेटा के लिए कहीं और चाहिए जिसे आप जाने के लिए चुन रहे हैं - sys_refcursor से संबंधित कुछ पैरामीटर प्रकार।

यदि आप इसका परीक्षण करने के लिए SQL*Plus का उपयोग कर रहे हैं तो आप एक एसक्यूएल*प्लस वैरिएबल इसके लिए और फिर उसे एक बाइंड वैरिएबल के रूप में पास करें, और फिर print कर्सर सामग्री प्रदर्शित करने के लिए आदेश:

variable rc refcursor
exec javao(1, :rc);
print rc

यह SQL डेवलपर में भी काम करता है। जब आप अन्य कोड से प्रक्रिया को कॉल करते हैं, तो आपके पास पीएल/एसक्यूएल ब्लॉक में या बाहरी एप्लिकेशन में घोषित एक चर होगा (उदाहरण के लिए jdbc के माध्यम से) ), लेकिन उनका विवरण इस बात पर निर्भर करता है कि आप क्या कर रहे हैं।

Java से कॉल करने के लिए, आपको कुछ ऐसा करना होगा:

// get connection
CallableStatement cStmt = conn.prepareCall("{ call javao(?, ?) }");
cStmt.setInt(1, 1);
cStmt.registerOutParameter(2, OracleTypes.cursor);
cStmt.execute();
ResultSet rSet = ((OracleCallableStatement) cStmt).getCursor(2);
while (rSet.next())
{
    // get columns from result set row and do something with the data
}

... लेकिन यह छद्म कोड में सीमाबद्ध है, और आपको रिक्त स्थान भरने के लिए दस्तावेज़ीकरण पढ़ने की आवश्यकता होगी (और किसी भी त्रुटि को ठीक करें; उदाहरण के लिए आपको शायद ओरेकल-विशिष्ट कथन प्रकारों की आवश्यकता है), और ऑब्जेक्ट क्लोजिंग और सभी को संभालने में त्रुटि जोड़ें सभी वह अन्य अच्छी चीजें।




  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. RAC VM का बैकअप कैसे लें

  3. Oracle RAC परिप्रेक्ष्य से SQL सर्वर क्लस्टरिंग

  4. ORA-02287:यहां अनुक्रम संख्या की अनुमति नहीं है

  5. जावा का उपयोग करके Oracle डेटाबेस में IN और OUT पैरामीटर के संग्रहीत फ़ंक्शन को कैसे कॉल करें?