sql >> Database teknologi >  >> RDS >> Oracle

orakeludtryk af forkert type under kontrol af variabel

Det er ikke sådan, du skal sammenligne værdierne for data_length og data_precision . Sammenlign dem som rigtige tal, konverter det ikke til en streng:

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;
/

Bemærk, at SELECT COUNT(*) efter det første valg er ubrugeligt. Hvis der ikke er en sådan kolonne, den første SELECT data_length, data_precision INTO vil allerede kaste en ORA-01403: no data found undtagelse, og koden når aldrig checken, hvis kolonnen eksisterer.



  1. Problemer med at bruge MySQL-stik med Django 1.8

  2. Hvorfor får jeg en åben transaktion, når jeg bare vælger fra en databasevisning?

  3. Sådan får du den bedste brug af kommentarfunktionen i MySQL

  4. ClassCastException:java.math.BigInteger kan ikke castes til java.lang.Long på forbindelse til MySQL