有一个叫做的表TableA和另一个叫做的表TableB
我需要复制的列值ValueC表中TableB的列ValueD在表中TableA.两个表共享一个公共列:Table_id
我试过用:
DECLARE
CURSOR c_App
IS
SELECT *
from TableA
BEGIN
for i in c_App
LOOP
select ValueD from TableB where Table_id = c_App.Table_id;
END LOOP;
update TableA set ValueC = ValueD where Table_id = c_App.Table_id
END;
Run Code Online (Sandbox Code Playgroud)
但是,我在SQL开发人员中遇到错误:
Run Code Online (Sandbox Code Playgroud)PLS-00103: Encountered the symbol "END" when expecting one of the following: begin function package pragma procedure subtype type use <an identifier> <a double-quoted delimited-identifier> form current cursor 06550. 00000 - "line %s, column %s:\n%s" *Cause: Usually a PL/SQL compilation error. *Action:
我究竟做错了什么?
有没有更简单的方法?我对PL/SQL比较陌生,虽然我觉得联接可能是一个更容易的选择.
在您的情况下无需使用程序处理.您可以使用merge语句完成此操作:
merge
into tableA ta
using TableB tb
on (ta.table_id = tb.table_id)
when matched
then update
set ta.valueD = tb.valueC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2171 次 |
| 最近记录: |