我是PL / SQL的新手,我需要创建一个游标for循环来将名为stk_flag的coulmn更新为*或者如果总库存值超过50美元则为null。
例如Alien Movie_value = 10 * movie_qty = 5 == 50所以那么STK_FLAG应该是*。
ID VALUE QTY STK_FLAG
1 ------ 10 ------ 5
2 ------- 8 ------ 3
3 ------ ------ 15 11
4 ------ 7 ------ 2
5 ------ 7 ------ 1
6 ------ 7 ------- 2
7 ------ 7 ------- 1
8 ------ 5 ------ 1
9 ------ 5 ------ 3
10 ---- 12 ------ 4
11 ---- 14 ------ 3
12 ---- 15 ----- 5
到目前为止我的代码:
DECLARE
CURSOR cur_movie IS
SELECT movie_value, movie_qty, stk_flag
INTO lv_movie_price, lv_movie_qty
FROM mm_movie
WHERE movie_id = 3;
lv_movie_price NUMBER(5,2);
lv_movie_qty NUMBER(4);
lv_movie_stk NUMBER(3,2);
BEGIN
FOR movie_star IN cur_movie LOOP
IF lv_movie_stk >= 75 THEN
UPDATE mm_movie
SET stk_flag = '*';
ELSE
UPDATE mm_movie
SET stk_flag = 'NULL';
END IF;
END LOOP;
END;
答案 0 :(得分:0)
执行此操作的一种方法是使用UPDATE
语句:
UPDATE MM_MOVIE
SET STK_FLAG = CASE
WHEN MOVIE_VALUE * MOVIE_QTY >= 50 THEN '*'
ELSE NULL
END;
如果必须使用游标FOR循环,请尝试以下操作:
DECLARE
CURSOR c1 IS
SELECT ID, movie_value, movie_qty
FROM mm_movie;
BEGIN
FOR aRow IN c1 LOOP
UPDATE mm_movie
SET stk_flag = CASE
WHEN aRow.MOVIE_VALUE * aRow.MOVIE_QTY >= 50 THEN '*'
ELSE NULL
END
WHERE ID = aRow.ID;
END LOOP;
END;
分享并享受。