-1
Forループでシーケンスを使用してOracleテーブルに行を挿入する際に問題がありました。FOR LOOPでシーケンスを使用してOracleテーブルに行を挿入する
間違った用法: - それは
DECLARE ASSET_CLAIM_STAGE_ID NUMBER := tblAssetClaimStage_ID_SEQ.NextVal;
BEGIN
FOR SI IN 1..STAGEID LOOP
INSERT INTO tblAssetClaimStage (assetClaimStageID, assetID, claimstageID, createDateTime)
SELECT ASSET_CLAIM_STAGE_ID, IN_ASSETID, SI, IN_SOLDDATE FROM DUAL WHERE NOT EXISTS (SELECT ASSETID
FROM tblAssetClaimStage
WHERE assetID = IN_ASSETID AND
claimstageID = SI);
END LOOP;
正しい使用法インクリメントされていないので、1行しか挿入:
FOR SI IN 1..STAGEID LOOP
INSERT INTO tblAssetClaimStage (assetClaimStageID, assetID, claimstageID, createDateTime)
SELECT tblAssetClaimStage_ID_SEQ.NextVal, IN_ASSETID, SI, IN_SOLDDATE FROM DUAL WHERE NOT EXISTS (SELECT ASSETID
FROM tblAssetClaimStage
WHERE assetID = IN_ASSETID AND
claimstageID = SI);
END LOOP;
COMMIT;
はこれを行うには、他のより良い方法はありますか?
ループ内でないとシーケンスをインクリメントする必要があると思われるのはなぜですか? 12cは自動インクリメントを提供します。これはオラクルのどのバージョンですか? – OldProgrammer
Oracle Database 11g Enterprise Editionリリース11.2.0.4.0、ループ内のSEQをインクリメントしたい – Vijai
単純な答え:いいえ。どのような問題、まさにあなたは解決しようとしていますか? –