2016-07-01 3 views
0

iはforループせずにコードを書かれていたが、あなたのテーブル構造を提供することができforループを使ってplsqlのプロシージャで私のテーブルの列を更新する方法は?

begin 
    UPDATE XX_TBEMP 
    SET COMM=SAL*.05 
    WHERE SAL BETWEEN 80000 AND 99999; 
end PR_UPDATETBEMP; 
+0

ような手順PR_UPDATETBEMP(数COMM)を作成したり、置き換え、forループによってそれを更新するために、私にソリューションを提供してください?列など –

+0

なぜあなたはループでこれをしたいですか? 1つの更新ステートメントはすでにすべての行を更新しており、カーソルをループして一度に1行ずつデータを更新するよりもパフォーマンスが向上します。 – Boneist

+0

ENO \t NUMBER(3)\t Y \t \t ENAME \t VARCHAR2(35)\t \t \t HIREDATE \t DATE \t \t \t SAL \t NUMBER(6)\t \t \t EXPR \t NUMBER(3)\t \t \t DEPTNO \t NUMBER(3)\t \t \t JOB 0123私のテーブル構造であるVARCHAR2(20)\t \t \t COMM \t NUMBER(10) –

答えて

0
create or replace PACKAGE XX_UPDATETBEMP AS 
PROCEDURE XX_UPDATECOMM; 
end XX_UPDATETBEMP; 

create or replace PACKAGEBODY XX_UPDATETBEMP AS 
PROCEDURE XX_UPDATECOMM IS 
CURSOR C_TBEMP IS SELECT * FROM XX_TBEMP; 
R_TBEMP C_TBEMP%ROWTYPE; 
BEGIN 

FOR SAL IN C_TBEMP 
LOOP 
UPDATE XX_TBEMP 
     SET COMM  = sal * 0.2 where SAL BETWEEN 30000 AND 49999; 
     UPDATE XX_TBEMP 
     SET COMM  = sal * 0.15 where SAL BETWEEN 50000 AND 79999; 
     UPDATE XX_TBEMP 
     SET COMM  = sal * 0.1 where SAL BETWEEN 80000 and 99999; 
END LOOP; 
END XX_UPDATECOMM; 
END XX_UPDATETBEMP; 
関連する問題