Ik ben er vrij zeker van dat ik de oorzaak van dit gedrag heb gevonden:ik vermoed dat de kolom eigenlijk van het type CHAR is en niet van VARCHAR2.
Overweeg het volgende:
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
Conclusie:
- Declareer uw PL/SQL-variabelen als CHAR als u met het CHAR-gegevenstype werkt.
- Geef indien mogelijk de voorkeur aan het VARCHAR2-gegevenstype voor tabelkolomdefinitie. Het CHAR-gegevenstype is gewoon een opgeblazen VARCHAR2-gegevenstype en voegt geen enkele functie toe boven het VARCHAR2-gegevenstype (meer ruimte/geheugen verbruiken is geen functie).