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).