Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORACLE:TIDAK DATA DITEMUKAN -- tapi data ada

Saya cukup yakin telah menemukan penyebab perilaku ini:Saya menduga kolom tersebut sebenarnya bertipe CHAR dan bukan VARCHAR2.

Pertimbangkan hal berikut:

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

Kesimpulan:

  • Saat bekerja dengan tipe data CHAR, deklarasikan variabel PL/SQL Anda sebagai CHAR.
  • Jika memungkinkan, pilih tipe data VARCHAR2 untuk definisi kolom tabel. Tipe data CHAR hanyalah tipe data VARCHAR2 yang membengkak dan tidak menambahkan fitur apa pun di atas tipe data VARCHAR2 (memakan lebih banyak ruang/memori bukanlah fitur).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LINGKUP untuk tabel REF

  2. Memuat DataFrame dari Pandas ke SQL untuk ORACLE Yields and ERROR - ORA-00911:Karakter Tidak Valid

  3. JPA dan 1000 ID digunakan di Oracle IN Operator

  4. Tambahkan Tanda Mata Uang £, $ ke bidang tertentu ORACLE

  5. Bagaimana cara menggunakan nama partisi sebagai parameter dalam pernyataan pilih?