Đây không phải là cách bạn nên so sánh các giá trị cho data_length
và data_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.