我正在檢查列的長度和精度,如果精度高於數據庫,那麼我應該執行alter system。錯誤類型的oracle表達式,同時檢查變量
似乎錯誤是在這裏(COL_COUNT <> 0 AND TO_NUMBER(OLD_LENGTH) < 6,2)
編輯
DECLARE COL_COUNT NUMBER;
OLD_LENGTH number(6);
old_prec number(6);
BEGIN
COL_COUNT:= 0;
SELECT DATA_LENGTH, DATA_PRECISION INTO OLD_LENGTH , old_prec FROM USER_TAB_COLS WHERE TABLE_NAME='EX_EMPLOYEE' AND COLUMN_NAME='ID';
SELECT COUNT (1) INTO COL_COUNT FROM USER_TAB_COLUMNS WHERE TABLE_NAME='EX_EMPLOYEE'AND COLUMN_NAME='ID';
IF (COL_COUNT <> 0 AND to_number(OLD_LENGTH) < 6.2) THEN
EXECUTE IMMEDIATE ('ALTER TABLE EX_EMPLOYEE MODIFY ID NUMERIC(6,2)');
END IF;
END;
/
嘗試使用6.2(點代替逗號) –
'select count()'在代碼中的該位置無用。如果該列不存在,第一個'select'將會拋出一個'ORA-01403:沒有找到數據',並且PL/SQL塊將會終止 –
新代碼是無效的PL/SQL,並且使得一切更加令人困惑 –