c# - ado.net oracle stored procedure output varchar parameter split-cut-truncated -
मेरे पास एक ओरेकल-संग्रहित प्रक्रिया (एसपी) है जो varchar
पैरामीटर देता है, लेकिन जब मैं सपा को निष्पादित करें और आउटपुट पढ़ने की कोशिश करें, स्ट्रिंग कट जाती है। जब मैं एसओपी को टॉड पर निष्पादित करता हूं और एक dbms.output
बना दिया है, तो स्ट्रिंग अच्छी तरह से लौट जाती है।
प्रक्रिया testStringOutput (संख्या में संख्या, str बाहर varchar2) V_C के रूप में संख्या (38); V_E VARCHAR2 (2000); चयन करें '12345678910111213141516171819PPPPPPPPPPPPPPPPPPPPPPP' दोहरी से स्ट्रिंग में; अपवाद तब जब अन्य V_C: = SQLCODE; V_E: = SQLERRM; Dbms_output.put_line (V_C || '- & gt;' || V_E); समाप्त;
जिस तरह से मैं सपा को स्क्रिप्ट कहता हूं:
P2 VARCHAR2 (2000) घोषित करें: = ''; पीकेजीटीईएसटी शुरू करें। Dbms_output.put_line ('आउटपुट स्ट्रिंग - & gt;' || P2); समाप्त;
आउटपुट:
आउटपुट स्ट्रिंग - & gt; 12345678910111213141516171819PPPPPPPPPPPPPPPPPPPPPPP
जिस तरह से सपा को c # से कहा जाता है:
सार्वजनिक शून्य TestOutputString () {string str = string.Empty; का प्रयोग (कनेक्शन) {OracleCommand objCmd = new OracleCommand (); ObjCmd.Connection = कनेक्शन; ObjCmd.CommandText = "PKGTEST.testStringOutput"; ObjCmd.CommandType = कमांड टाईप। स्टोर्डप्रक्रियर; ObjCmd.Parameters.Add ("num", OracleType.Number)। मूल्य = 0; ObjCmd.Parameters.Add ("str", OracleType.VarChar, 2000)। डायरेक्शन = पैरामीटर डायरेक्शन.ऑप्टपुट; Foreach (OracleParameter पैरामीटर objCmd.Parameters में) अगर (पैरामीटर.वल्यू == रिक्त) पैरामीटर। Value = DBNull.Value; Try {connection.Open (); objCmd.ExecuteNonQuery (); Str = (objCmd.Parameters ["str"]। Value.ToString ()); } पकड़ (अपवाद पूर्व) {नए अपवाद (पूर्व। संदेश); } Connection.Close (); }}
लेकिन जब मैं प्रतिक्रिया स्ट्रिंग का निरीक्षण करता हूं, यह 123456789101112131415161718
तक विभाजित था, तो दूसरा भाग ( 19PPPPPPPPPPPPPPPPPPPPPPPPP
) खो गया था
अपडेट: मुझे यकीन है कि यह हुआ, एसपी के डब्लूसीएफ सेवा में वापसी के संदेश, लेकिन जब क्लाइंट प्रतिक्रिया मिली, इसे विभाजित किया गया था।
अंत में मुझे ओरेकल डेटा प्रदाता odp.net का उपयोग करना है Ado.net - System.Data.OracleClient (पदावनत) और यह काम करता है।
Comments
Post a Comment