sql >> Database >  >> RDS >> Oracle

ORACLE:GEEN GEGEVENS GEVONDEN -- maar er zijn wel gegevens

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).


  1. Kies uit een tabel waarin velden niet overeenkomen met de voorwaarden

  2. PL/SQL:hoe vraag ik gebruikersinvoer in een procedure?

  3. Een database lezen vanuit de activamap

  4. MySQL, utf8_general_ci &cyrillische tekens