0

每次运行循环时,我都想在表中添加一列。我创建了一个临时变量,它将为循环中的每次迭代采用不同的名称。现在我想在我的表中添加一个同名的列。我尝试过这样的事情,部分代码显示在 oracle sql developer 中:

DECLARE V_COUNT VARCHAR (10) := ZIP_COD
BEGIN
ALTER TABLE ABCD 
ADD V_COUNT varchar(10);

update ABCD b
set b.V_COUNT = (select d.ZIP_cod
from ORA_DMSTORE d
where b.id_dmstore = d.id_dmstore);
END;

这显示错误“通常是 PL/SQL 编译错误”。我不知道如何摆脱它。请帮忙

4

1 回答 1

1

首先,你不能ALTER TABLE ..在 PL/SQL 中做,你必须使用dbms_sqlor execute immediate

n并且列名不能以数字开头,因此在我的示例中,您需要某种前缀。

因此,一种可能的解决方案是:

DECLARE 
 V_COUNT VARCHAR (10) := ZIP_COD;
BEGIN
 EXECUTE IMMEDIATE 'ALTER TABLE ABCD ADD (n'||V_COUNT||' varchar(10))';

 EXECUTE IMMEDIATE '
 update ABCD b 
   set b.n'||V_COUNT||' = (select d.ZIP_cod
                             from ORA_DMSTORE d
                            where b.id_dmstore = d.id_dmstore)
 ';
END;
/
于 2012-08-25T12:32:02.643 回答