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

ORA-01722:Nomor Tidak Valid, temukan baris tertentu

Sebagian besar klien SQL akan melaporkan baris dan kolom tempat kesalahan terjadi. Jika Anda tidak memiliki IDE yang bagus, gunakan DBMS_SQL .

Klien SQL

Sebagian besar IDE SQL akan menyoroti nomor baris dan kolom kesalahan. Bahkan SQL*Plus menunjukkan dengan tepat di mana kesalahan nomor tidak valid terjadi:

SQL> select *
  2  from dual
  3  where 1 = 1
  4  and 1 = 'a'
  5  and 2 = 2;
and 1 = 'a'
        *
ERROR at line 4:
ORA-01722: invalid number

(Sayangnya, Oracle SQL Developer tidak menyediakan fungsionalitas ini.)

DBMS_SQL

Jika pilihan alat SQL Anda terbatas, Anda masih dapat menemukan nomor baris yang relevan menggunakan DBMS_SQL.LAST_ERROR_POSITION .

declare
    v_sql clob := q'[
        select *
        from dual
        where 1 = 1
            and 1 = 'a'
            and 2 = 2
    ]';
    v_cursor integer;
    v_ignore number;
begin
    v_cursor := dbms_sql.open_cursor;
    dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);
    v_ignore := dbms_sql.execute(v_cursor);
exception when others then
    dbms_output.put_line(sqlerrm);
    dbms_output.put_line('Error starts here: '||
        substr(v_sql, dbms_sql.last_error_position));
end;
/

Results:
ORA-01722: invalid number
Error starts here:  'a'
            and 2 = 2

(Jawaban ini mengasumsikan Anda dapat langsung menjalankan pernyataan SQL. Jika kesalahan adalah bagian dari program PL/SQL, maka tidak ada cara mudah setelah fakta untuk menemukan nomor baris di dalam pernyataan SQL, kecuali Anda dapat menjalankannya lagi melalui DBMS_SQL . Konteks yang tepat penting di sini.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - hapus semua catatan anak untuk orang tua

  2. Administrasi Dasar Oracle 12c Multitenant

  3. Oracle 19c Open_cursor melebihi masalah

  4. Batas waktu OracleCommand

  5. Kinerja Oracle CLOB