इस तरह से आपको data_length
. के मानों की तुलना नहीं करनी चाहिए और data_precision
. उचित संख्याओं के रूप में उनकी तुलना करें, उसे एक स्ट्रिंग में न बदलें:
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;
/
ध्यान दें कि SELECT COUNT(*)
बाद पहला चयन बेकार है। अगर ऐसा कोई कॉलम नहीं है तो पहले SELECT data_length, data_precision INTO
पहले से ही एक ORA-01403: no data found
अपवाद और यदि कॉलम मौजूद है तो कोड कभी भी चेक तक नहीं पहुंचेगा।