create or replace procedure updatemobileandphone asdeclare cursor c1 is
select xm,dh,dh2 from usertemp where 1=1;
begin
for cursor1 in c1
loop
update employeeinfo
set
employeeinfo.mobile=cursor1.dh
employeeinfo.phone=cursor1.dh2
where employeeinfo.employeename=cursor1.xm;
end loop;
end;
就是不知道哪里错了,请指教
select xm,dh,dh2 from usertemp where 1=1;
begin
for cursor1 in c1
loop
update employeeinfo
set
employeeinfo.mobile=cursor1.dh
employeeinfo.phone=cursor1.dh2
where employeeinfo.employeename=cursor1.xm;
end loop;
end;
就是不知道哪里错了,请指教
-- 一次性更新多列数据,别用 cursor ,太慢了
update A
set (b,c) = (select f,g from B where A.a = B.d)
where exists(select * from where A.a = B.d)
MERGE INTO A
USING B
ON (A.a = B.d)
WHEN MATCHED THEN
UPDATE
SET A.b=B.f,A.c=B.g;
-- 一次性更新多列数据,别用 cursor ,太慢了
update A
set (b,c) = (select f,g from B where A.a = B.d)
where exists(select * from where A.a = B.d)
不知道为什么会报错update employeeinfo
set (mobile,phone)=(select dh,dh2 from usertemp where employeeinfo.employeename=usertemp.xm),
where
exists(select * from employeeinfo e ,usertemp where e.employeename=usertemp.xm);
但是merge into usertemp
using employeeinfo
on (usertemp.xm=employeeinfo.employeename)
when matched then
update
set usertemp.dh= employeeinfo.mobile, usertemp.dh2=employeeinfo.phone;测试通过,不知道为什么
-- 括号中的子查询,只写一个表名,不要把两个表名都写进去。
set (b,c) = (select f,g from B where A.a = B.d)-- 你给改下面的格式了(这个写法不对)
set (b,c) = (select f,g from A,B where A.a = B.d)