【发布时间】:2025-12-15 13:50:02
【问题描述】:
我正在尝试编写一个基于 table2 更新我的表的代码。
Table1 包含如下列:COLUMN1,COLUMN2,COLUMN3...
Table2 包含第 2 列: - 第一列包含 table1 中应该更新的列的名称 -第二个包含应该设置的VALUE
所以 Table2 输出:
columnname,value
----------------
COLUMN1 , 'sometext'
COLUMN2 , 'somethingelse'
set serveroutput on;
declare cursor doupdate
is
select columnname,value from TABLE2;
nazwa TABLE2.columnname%type;
wartosc TABLE2.value%type;
begin
open doupdate;
loop
fetch doupdate into nazwa,wartosc;
exit when doupdate%notfound;
update table1 set nazwa=wartosc;
end loop;
end;
在尝试运行该代码时,我收到一条错误消息:
PL/SQL: ORA-00904: "NAZWA": niepoprawny identyfikator ORA-06550: linia 12, kolumna 1: PL/SQL:忽略 SQL 语句
我做错了什么?相同类型的列 - Varchar2(200 字节) 编辑。只有NAME有问题...有人知道解决方案吗?...
EDIT2。我做了它,它工作正常。我使用了动态 SQL,所以它看起来像:execute immediate 'update acc SET '||nazwa||'='||wartosc; .谁能解释一下为什么?:)
【问题讨论】: