Estoy bastante seguro de que encontré la causa de este comportamiento:supongo que la columna es en realidad del tipo CHAR y no VARCHAR2.
Considere lo siguiente:
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
Conclusión:
- Cuando trabaje con el tipo de datos CHAR, declare sus variables PL/SQL como CHAR.
- Cuando sea posible, prefiera el tipo de datos VARCHAR2 para la definición de columnas de la tabla. El tipo de datos CHAR es solo un tipo de datos VARCHAR2 inflado y no agrega ninguna característica sobre el tipo de datos VARCHAR2 (consumir más espacio/memoria no es una característica).