'0'またはいくつかの連続するゼロを見逃したレコードで更新されることがあるテーブルがあります。レコードの長さは、小数点を超えて8桁にする必要があります(合計10文字)。
たとえば、元々1.12345600のように見えたレコードは、最終的に1.123456のようになります。
すべてのレコードの長さをチェックし、10文字より短い各レコードに「0」を追加するスクリプトを作成しました。
問題は、「0」を1回だけ追加することです。上記の例は、1.12345600ではなく1.1234560のようになります。これはスクリプトです:
DECLARE
CURSOR dif IS
SELECT CUST_CODE, CUST_ID, CONTRACT_NUM, MSISDN
FROM project1;
BEGIN
FOR a in dif LOOP
IF LENGTH (a.CUST_CODE)<10
THEN
UPDATE project1
SET CUST_CODE=a.CUST_CODE||'0'
WHERE CUST_CODE=a.CUST_CODE;
END IF;
END LOOP;
commit;
END;
実行が終了すると、単一の「0」が追加されます。スクリプトを再度実行すると、まだ10文字より短いレコードに別の「0」が追加されます。7文字のReocrdは、3回実行する必要があります。
すべてが必要な長さに達するまでレコードをチェックし続けるために、どこかに別のループがあるはずだと思います。何か案が?