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

ekspresi oracle dari tipe yang salah saat memeriksa variabel

Ini bukan bagaimana Anda harus membandingkan nilai untuk data_length dan data_precision . Bandingkan mereka sebagai angka yang tepat, jangan mengubahnya menjadi string:

DECLARE 
  old_length NUMBER;
  old_prec   NUMBER;
BEGIN

  SELECT data_length, coalesce(data_precision,0)
     INTO old_length, old_prec 
  FROM user_tab_cols 
  WHERE table_name='EX_EMPLOYEE' 
    AND column_name='ID';

  IF (old_length <> 6 and old_prec <> 2) THEN
    EXECUTE IMMEDIATE ('ALTER TABLE EX_EMPLOYEE MODIFY ID NUMERIC(6,2)');
  END IF;

END;
/

Perhatikan bahwa SELECT COUNT(*) setelah pilihan pertama tidak berguna. Jika tidak ada kolom seperti itu SELECT data_length, data_precision INTO pertama sudah akan melempar ORA-01403: no data found pengecualian dan kode tidak akan pernah mencapai pemeriksaan jika kolom ada.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Enkripsi kata sandi di R - untuk terhubung ke Oracle DB menggunakan RODBC

  2. UPDATE dengan sintaks GABUNG untuk Oracle Database

  3. Apakah ada cara untuk menginstal Java di Oracle 11g XE?

  4. PERIKSA CONSTRAINT string yang hanya berisi angka. (Oracle SQL)

  5. Perbedaan antara pengguna dan skema di Oracle?