sql >> Databáze >  >> RDS >> Oracle

ORACLE:ŽÁDNÁ DATA NALEZENA -- ale data existují

Jsem si docela jistý, že jsem našel příčinu tohoto chování:Hádám, že sloupec je ve skutečnosti typu CHAR a ne VARCHAR2.

Zvažte následující:

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

Závěr:

  • Při práci s datovým typem CHAR deklarujte své proměnné PL/SQL jako CHAR.
  • Pokud je to možné, upřednostněte pro definici sloupce tabulky datový typ VARCHAR2. Datový typ CHAR je pouze nafouknutý datový typ VARCHAR2 a nepřidává žádnou funkci nad datový typ VARCHAR2 (spotřeba více místa/paměti není funkce).


  1. Homebrew MySQL 8.0.18 na macOS 10.15 Catalina nebude fungovat jako služba

  2. PO DUPLIKÁTNÍM KLÍČI zvýšit více sloupců?

  3. Django:Stůl neexistuje

  4. Vytvořte sloupec typu double precision[] s liquibase