Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORACLE :PAS DE DONNÉES TROUVÉES -- mais des données existent

Je suis presque sûr d'avoir trouvé la cause de ce comportement :je suppose que la colonne est en fait de type CHAR et non VARCHAR2.

Considérez ce qui suit :

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

Conclusion :

  • Lorsque vous travaillez avec le type de données CHAR, déclarez vos variables PL/SQL en tant que CHAR.
  • Si possible, préférez le type de données VARCHAR2 pour la définition des colonnes de table. Le type de données CHAR est juste un type de données VARCHAR2 gonflé et n'ajoute aucune fonctionnalité au type de données VARCHAR2 (consommer plus d'espace/mémoire n'est pas une fonctionnalité).