【发布时间】:2015-10-05 00:49:30
【问题描述】:
在图片中有一个我拥有的表和我需要创建的表的示例。
我必须使用表测试计算一些值,然后向其中添加一些新列(Id2x 和 Id3x),并使用我计算的值更新这些列。我发现问题在于尝试创建列并更改它。如果我的表中已经有 id2x 和 id3x 列,我可以更新表,只要我注释行 EXECUTE IMMEDIATE 'Alter table Testing add (id2X NUMBER, id3X NUMBER)';
SET SERVEROUTPUT ON
DECLARE
CURSOR cursorP IS
SELECT id, (2*id) as id2X, (3*id)as id3X
FROM Testing
FOR UPDATE OF id2X, id3X;
BEGIN
EXECUTE IMMEDIATE 'Alter table Testing add (id2X NUMBER, id3X NUMBER)';
FOR line IN cursorP LOOP
UPDATE Testing
SET id2X = line.id2X,
id3X = line.id3X
WHERE current of cursorP;
END LOOP;
END;
错误:
ORA-06550:第 10 行,第 33 列:
PL/SQL:ORA-00904:“ID3X”:无效标识符
ORA-06550:第 9 行,第 5 列:
PL/SQL:忽略 SQL 语句
06550. 00000 - “第 %s 行,第 %s 列:\n%s”
*原因:通常是 PL/SQL 编译
【问题讨论】:
-
您好,我想您忘了说您希望我们帮助您解决什么问题。您在运行此块时遇到任何错误吗?
-
错误代码是葡萄牙语,这就是为什么我没有在这里发布它,但我尝试翻译它现在就在那里
-
你打算把这个块变成一个过程吗?还是一次性执行块?
-
我只需要执行一次上面的脚本
-
我发现如果我的表中已经有 id2x 和 id3x 列,我可以更新表,只要我注释行 EXECUTE IMMEDIATE 'Alter table Testing add (id2X NUMBER, id3X NUMBER) ';
标签: plsql sql-update cursor alter