Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORACLE:KEINE DATEN GEFUNDEN -- aber Daten vorhanden

Ich bin mir ziemlich sicher, dass ich die Ursache für dieses Verhalten gefunden habe:Ich vermute, dass die Spalte tatsächlich vom Typ CHAR und nicht VARCHAR2 ist.

Beachten Sie Folgendes:

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

Fazit:

  • Wenn Sie mit dem Datentyp CHAR arbeiten, deklarieren Sie Ihre PL/SQL-Variablen als CHAR.
  • Wenn möglich, bevorzugen Sie den Datentyp VARCHAR2 für die Tabellenspaltendefinition. Der CHAR-Datentyp ist nur ein aufgeblähter VARCHAR2-Datentyp und fügt dem VARCHAR2-Datentyp keine Funktion hinzu (mehr Platz/Speicher zu verbrauchen ist keine Funktion).