Sono abbastanza sicuro di aver trovato la causa di questo comportamento:suppongo che la colonna sia effettivamente di tipo CHAR e non VARCHAR2.
Considera quanto segue:
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
Conclusione:
- Quando si lavora con il tipo di dati CHAR, dichiarare le variabili PL/SQL come CHAR.
- Quando possibile, preferisci il tipo di dati VARCHAR2 per la definizione delle colonne della tabella. Il tipo di dati CHAR è solo un tipo di dati VARCHAR2 gonfio e non aggiunge alcuna funzionalità al tipo di dati VARCHAR2 (il consumo di più spazio/memoria non è una funzionalità).