मुझे पूरा यकीन है कि मुझे इस व्यवहार का कारण मिल गया है:मुझे लगता है कि कॉलम वास्तव में CHAR प्रकार का है न कि VARCHAR2।
निम्नलिखित पर विचार करें:
SQL> CREATE TABLE t (a CHAR(10));
Table created.
SQL> INSERT INTO t VALUES ('FUCHSB');
1 row created.
SQL> SELECT * FROM t WHERE a = 'FUCHSB';
A
----------
FUCHSB
SQL> DECLARE
2 l VARCHAR2(20) := 'FUCHSB';
3 BEGIN
4 SELECT a INTO l FROM t WHERE a = l;
5 END;
6 /
DECLARE
*
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at line 4
निष्कर्ष:
- CHAR डेटाटाइप के साथ काम करते समय, अपने PL/SQL वैरिएबल को CHAR घोषित करें।
- जब संभव हो, तालिका स्तंभ परिभाषा के लिए VARCHAR2 डेटाटाइप को प्राथमिकता दें। CHAR डेटाटाइप केवल एक फूला हुआ VARCHAR2 डेटाटाइप है और VARCHAR2 डेटाटाइप (अधिक स्थान/स्मृति का उपभोग करना एक विशेषता नहीं है) पर कोई सुविधा नहीं जोड़ता है।