2010-01-16 8 views
5

मैं .NET ऐप से संग्रहीत प्रो का आह्वान कर रहा हूं। Proc Varchar2 प्रकार का आउट पैरामीटर देता है। fet करने के लिए बाहर पैरामीटर मैं OracleParameter के रूप में आदेश के लिए पैरामीटर गुजर रहा Ch:Oracle.Dataaccess त्रुटि ORA-06502: पीएल/एसक्यूएल: संख्यात्मक या मूल्य त्रुटि: वर्ण स्ट्रिंग बफर बहुत छोटा

parm12 = new OracleParameter("testkey" 
           , OracleDbType.Varchar2 
           , out2 
           , ParameterDirection.Output); 

जब मैं proc निष्पादित मैं एक त्रुटि

PL/SQL: numeric or value error: character string buffer too small. 
+0

इसके बारे में काम कर रहे पूर्ण स्रोत कोड नमूने के साथ कोई अंतिम समाधान? – Kiquenet

उत्तर

1

प्राप्त कर रहा अपने कोड out2 में तर्क है जो पैरामीटर की लंबाई निर्दिष्ट करता है। तो उस चर में मान की जांच करें, क्योंकि स्पष्ट रूप से यह प्रक्रिया के आउटपुट के लिए पर्याप्त नहीं है।

6

उत्तर मिला।

आउट पैरामीटर के लिए मैंने आकार को अधिकतम वर्चर - 32767 तक घोषित कर दिया और यह काम करना शुरू कर दिया।

सरलीकृत करने के लिए, संग्रहीत प्रो प्रकार VARCHAR2 प्रकार का एक पैरामीटर देता है। लेकिन .NET से उस आउटपुट का उपभोग करने के लिए मैं बिना किसी आकार के VARCHAR2 पास कर रहा था। तो पुनर्नवीनीकरण मूल्य प्राप्त करने के लिए आवंटित बफर स्पेस 0 बाइट था। जब proc आवंटित बफर से अधिक मान देता है जो 0 बाइट्स है तो यह त्रुटियों से बाहर हो जाता है।

इसलिए मैंने सी # कोड में VARCHAR2-32767 का अधिकतम निर्दिष्ट किया और यह काम करना शुरू कर दिया :)।

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