但是事实上这两个表都是空的...啊 而且把这条sql语句单独 拿出来执行时没有错误的 对了,在存储过程中是这样写的execute immediate 'update table1 set (field1,field2)= (select field1,field2 from table2 where table2.field3=table1.field3) '
应该是数据的问题,你的table2表中可能重复field3的记录。 可以用 select '存在重复记录' from table2 group by field3 having count(*)>1 去检查是否有field3重复的记录。如果存在重复field3的记录,那你就要考虑用那一条记录去更新table1中的数据了
try:update table1 set (field1,field2)= (select field1,field2 from table2 where table2.field3=table1.field3) where exists (select 1 from table2 where table2.field3=table1.field3)
而且把这条sql语句单独 拿出来执行时没有错误的
对了,在存储过程中是这样写的execute immediate 'update table1 set (field1,field2)= (select field1,field2 from table2 where table2.field3=table1.field3) '
可以用
select '存在重复记录' from table2 group by field3 having count(*)>1
去检查是否有field3重复的记录。如果存在重复field3的记录,那你就要考虑用那一条记录去更新table1中的数据了
如果table1和tabl2非1对1的关系的话.sql执行会报错的.