我想更新循环中的表,我想添加存储在临时变量中的值。代码的一部分显示在这里:
SELECT SUM(CASE WHEN temp_atr_val = temp_val THEN net_sales_home ELSE 0 END) into temp_variable
FROM schemafinal_1;
EXECUTE IMMEDIATE 'ALTER TABLE SAR ADD ('||temp_name||' number)';
EXECUTE IMMEDIATE ' UPDATE SAR b
SET b.'||temp_name||' = temp_variable';
END LOOP;
END LOOP;
END;
当我运行上面的代码时,它说ORA-00904:“TEMP_VARIABLE”:无效的标识符 当我把&在temp_variable之前,它会询问我绑定值,并在每个单元格中填充该值。 如果我使用:temp_variable它说“ORA-01008:并非所有变量绑定
我是pl / sql和oracle sql开发人员的新手。请帮忙
答案 0 :(得分:0)
你应该使用 EXECUTE IMMEDIATE'更新SAR b SET b。'|| temp_name ||' ='|| TO_CHAR(temp_variable); 要么 EXECUTE IMMEDIATE'更新SAR b SET b。'|| temp_name ||' =:'使用temp_variable
temp_variable超出了范围,因此您在更新时失败。
答案 1 :(得分:0)
你去吧 -
SELECT SUM(CASE WHEN temp_atr_val = temp_val THEN net_sales_home ELSE 0 END) into temp_variable
FROM schemafinal_1;
EXECUTE IMMEDIATE 'ALTER TABLE SAR ADD ('||temp_name||' number)';
EXECUTE IMMEDIATE 'UPDATE SAR b SET b.'||temp_name||' = '|| temp_variable;
END LOOP;
END LOOP;
END;