Oracle
 sql >> база данни >  >> RDS >> Oracle

ORACLE:НЯМА НАМЕРЕНИ ДАННИ -- но данни съществуват

Почти съм сигурен, че открих причината за това поведение:предполагам, че колоната всъщност е от тип CHAR, а не VARCHAR2.

Имайте предвид следното:

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

Заключение:

  • Когато работите с типа данни CHAR, декларирайте вашите PL/SQL променливи като CHAR.
  • Когато е възможно, предпочитайте типа данни VARCHAR2 за дефиниране на колона в таблица. Типът данни CHAR е просто раздут тип данни VARCHAR2 и не добавя никаква функция към типа данни VARCHAR2 (консумирането на повече място/памет не е функция).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. изберете * от table_name, където колона като ' '

  2. Как мога да потвърдя, че базата данни е Oracle и каква версия използва SQL?

  3. Как да документираме база данни

  4. Как мога да направя функция, която да връща име(на) на колона(а) на ограничение?

  5. ADF филтърна таблица въз основа на дървовидна селекция