Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

ORACLE:KHÔNG CÓ CƠ SỞ DỮ LIỆU - nhưng dữ liệu tồn tại

Tôi khá chắc rằng mình đã tìm ra nguyên nhân của hành vi này:Tôi đoán rằng cột thực sự thuộc loại CHAR chứ không phải VARCHAR2.

Hãy xem xét những điều sau:

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

Kết luận:

  • Khi làm việc với kiểu dữ liệu CHAR, hãy khai báo các biến PL / SQL của bạn là CHAR.
  • Khi có thể, hãy chọn kiểu dữ liệu VARCHAR2 cho định nghĩa cột bảng. Kiểu dữ liệu CHAR chỉ là kiểu dữ liệu VARCHAR2 cồng kềnh và không thêm bất kỳ tính năng nào trên kiểu dữ liệu VARCHAR2 (tốn nhiều dung lượng / bộ nhớ hơn không phải là một tính năng).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 12c Cột tự động tạo với giá trị trình tự

  2. PostgreSQL và / hoặc SQL Server thay thế cho SYS_CONTEXT của Oracle

  3. Tìm toàn bộ cây từ gốc cho bất kỳ nút nào

  4. Shell Script với sqlplus và các ký tự đặc biệt trên mật khẩu

  5. Làm cách nào để tạo trường varchar2 ngắn hơn trong Oracle?