2013-07-16 4 views
5

मैं अगर मैं लेकिन कुछ याद आ रही है पता नहीं है कि मैं क्या कर रहा हूँ है:PL/SQL: सांख्यिक या मूल्य त्रुटि: चरित्र स्ट्रिंग बफ़र बहुत छोटा% ROWTYPE

मैं एक समारोह है कि एक ROWTYPE देता है

FUNCTION myFunc(pChar CHAR) RETURN myTable%ROWTYPE AS 
    myTable_rec myTable%ROWTYPE; 
    BEGIN 
    SELECT col1, col2, col3 
    INTO myTable_rec.col1 
     , myTable_rec.col2 
     , myTable_rec.col3 
    FROM myTable 
    WHERE col4 = pChar; 

    RETURN(myTable_rec); 
    END B001_03; 
तो

मेरी प्रक्रिया में (जो ऊपर फ़ंक्शन को कॉल), मैं घोषणा की:

myTable_rec myTable%ROWTYPE; 

लेकिन जब मैं प्रक्रिया में कहते हैं:

... 
myTable_rec := myFunc(someChar); 
... 

मैं

ORA-06502: PL/SQL: numeric or value error: character string buffer too small 

एक ही मेज से और एक ही डेटाप्रकार का होना चाहिए क्षेत्रों (मेरी छोटी समझ के रूप में) नहीं कर रहे हैं?

संपादित करें: मैंने * और हर काम को चुनने की कोशिश की। मैं निश्चित रूप से यहाँ कुछ याद कर रहा हूँ। मुझे नहीं पता कि यह है।

+0

आप चार के बजाय वर्चर 2 का उपयोग क्यों नहीं करते? –

+0

वाह वास्तव में समस्या हल हो गई। एक उत्तर दें और मैं इसे सर्वश्रेष्ठ उत्तर सर के रूप में चिह्नित करूंगा। मुझे वास्तव में क्या पहेली है कि "कुछ कक्ष" को उसी तालिका और कॉलम से पूछताछ की जाती है, इसलिए मुझे उम्मीद है कि यह समान डेटाटाइप और लंबाई 4 के रूप में होगा। – Incognito

उत्तर

5

मुझे लगता है कि समस्या चार का उपयोग करने से उत्पन्न होती है जो एक निश्चित लंबाई स्ट्रिंग है। निश्चित नहीं है कि, लेकिन कहीं भी आपके कोड में आप लेंस एम के चार में एक चार या वर्चर 2 स्ट्रिंग लम्बाई एन डालने का प्रयास करते हैं, जहां एम> एन

3

मुझे अपने .NET कोड के माध्यम से ओरेकल एसपी तक पहुंचने के दौरान यह त्रुटि मिल रही थी । अगर किसी को इस त्रुटि का सामना करना पड़ रहा है तो उसके लिए उसके इनपुट/आउटपुट पैरामीटर के आकार को निर्दिष्ट करने से समस्या को हल करने में मदद मिलेगी।

नमूना कोड इस प्रकार है:

OracleParameter oparamProjectId = mycom.Parameters.Add (। "P_open_flag", OracleDbType VARCHAR2); oparamProjectId.Direction = पैरामीटर डायरेक्शन। आउटपुट; oparamProjectId.Size = 100;

+0

बिल्कुल सही! अंत में त्रुटि खोजने की कोशिश करने के बाद मुझे पता है क्यों। आपका बहुत बहुत धन्यवाद! –

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