如何使用临时变量更新表

时间:2012-08-30 17:34:25

标签: variables plsql sql-update bind

我想更新循环中的表,我想添加存储在临时变量中的值。代码的一部分显示在这里:

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开发人员的新手。请帮忙

2 个答案:

答案 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;