sql >> Database teknologi >  >> RDS >> Oracle

ORACLE:INGEN DATA FUNDET -- men data findes

Jeg er ret sikker på, at jeg fandt årsagen til denne adfærd:Jeg gætter på, at kolonnen faktisk er af typen CHAR og ikke VARCHAR2.

Overvej følgende:

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

Konklusion:

  • Når du arbejder med CHAR-datatypen, skal du erklære dine PL/SQL-variabler som CHAR.
  • Når det er muligt, foretrækker du VARCHAR2-datatypen til tabelkolonnedefinition. CHAR-datatypen er blot en oppustet VARCHAR2-datatype og tilføjer ikke nogen funktion over VARCHAR2-datatypen (at forbruge mere plads/hukommelse er ikke en funktion).


  1. Få de mest gentagne lignende felter i MySQL-databasen

  2. Hvordan SECOND() virker i MariaDB

  3. hvordan kan vi kalde butiksprocedure i hvor-klausul

  4. SQL joins