Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORACLE:NIE ZNALEZIONO DANYCH -- ale dane istnieją

Jestem prawie pewien, że znalazłem przyczynę tego zachowania:zgaduję, że kolumna jest faktycznie typu CHAR, a nie VARCHAR2.

Rozważ następujące kwestie:

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

Wniosek:

  • Podczas pracy z typem danych CHAR zadeklaruj zmienne PL/SQL jako CHAR.
  • Jeśli to możliwe, do definicji kolumny tabeli preferuj typ danych VARCHAR2. Typ danych CHAR jest po prostu nadętym typem danych VARCHAR2 i nie dodaje żadnej funkcji do typu danych VARCHAR2 (zużywanie większej ilości miejsca/pamięci nie jest funkcją).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak skonfigurować schemat bazy danych, w którym istnieją dwie współbieżne relacje wiele-wiele?

  2. Gdzie jest baza danych błędów Oracle?

  3. Zapytanie o aktualizację dynamiczną w procedurze

  4. Jak określić limit czasu @lock w wiosennym zapytaniu jpa?

  5. Pobierz BLOB z kolumny BFILE w Oracle