1

我想更新循环内的表,并且想添加存储在临时变量中的值。部分代码如下所示:

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

4

2 回答 2

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;
于 2012-09-05T01:44:50.197 回答
0

您应该使用 EXECUTE IMMEDIATE ' UPDATE SAR b SET b.'||temp_name||' =' || to_char(temp_variable); 或 EXECUTE IMMEDIATE 'UPDATE SAR b SET b.'||temp_name||' = :a' 使用 temp_variable

temp_variable 超出范围,因此更新失败。

于 2012-08-30T18:31:42.437 回答