Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

biểu thức oracle sai kiểu trong khi kiểm tra biến

Đây không phải là cách bạn nên so sánh các giá trị cho data_lengthdata_precision . So sánh chúng dưới dạng số thích hợp, không chuyển đổi thành chuỗi:

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

Lưu ý rằng SELECT COUNT(*) sau lựa chọn đầu tiên là vô ích. Nếu không có cột như vậy thì SELECT data_length, data_precision INTO sẽ ném một ORA-01403: no data found ngoại lệ và mã sẽ không bao giờ được kiểm tra nếu cột tồn tại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Câu lệnh Oracle SQL * Plus ACCEPT

  2. ORA-00257:lỗi trình lưu trữ. Chỉ kết nối nội bộ, cho đến khi được giải phóng.

  3. Tắt và khởi động phiên bản Oracle

  4. Phương pháp dễ nhất để kiểm tra một thủ tục được lưu trữ của Oracle

  5. Apache Dbutils thay đổi tên cột trong bản cập nhật Sql