我在嘗試編寫更新我在table2上的表基的代碼。嘗試更新值時出現錯誤(光標)
表1包含列,如:COLUMN1,COLUMN2,欄3 ...
表2包含列2列: - 第一列包含從表1列的名稱應該是更新 - 第二包含值應設置
所以表2輸出:
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: 「由...」:niepoprawny identyfikator ORA-06550:linia 12,kolumna 1: PL/SQL:SQL語句忽略
我做錯了什麼?相同類型的列 - Varchar2(200字節) 編輯。只有與NAME的一個問題...任何人都知道該如何解決?...
EDIT2。我知道它,它工作正常。我使用動態SQL,因此它看起來像:執行立即'更新acc SET'|| nazwa ||'='|| wartosc; 。任何人都可以解釋,爲什麼呢?:)
嗨Praveen,是的,幾分鐘後我意識到我應該使用動態SQL。我現在有其他問題。當table2.value中的數據如下所示時,我收到了一條錯誤消息:smth,smth2。當數據看起來一切正常時:'smth','smth2',所以有引號。有沒有辦法在不改變table2數據的情況下如何處理? – maciek2791
看到編輯..... – Praveen