我正在尝试更新表“sweatsuits”中的价格列。 目标是当颜色为 'red' 或 'pink' 时,将价格列值加起来 100。我写了下面的代码,它给我带来了错误:
invalid identifier 'PRICE_NEW' (line 229)
这是我执行的脚本
CREATE OR REPLACE PROCEDURE sp_up_base_table()
RETURNS TEXT
LANGUAGE SQL
AS
$$
DECLARE
price_new number(5,2);
color_or_style_text text;
res RESULTSET;
c1 CURSOR FOR SELECT * FROM sweatsuits WHERE color_or_style IN ('Pink', 'Red');
BEGIN
FOR rec IN c1 DO
color_or_style_text := rec.color_or_style;
price_new := rec.price + 100;
UPDATE sweatsuits SET price = price_new where color_or_style = color_or_style_text;
END FOR;
RETURN 'update success';
END;
$$;
使用游标 FOR 循环是更新表的一种非常低效的方法,可以通过单次运行来完成:
UPDATE sweatsuits
SET price = price_new
where color_or_style IN ('Pink', 'Red');