2 qq 32504001 qq_32504001 于 2017.09.08 14:58 提问

存储过程 使用for循环更新执行 报错 ORA-06550

create or replace procedure test is
Cursor C_EMP is
select * from CST_TW_RECORD where GRANT_STATE = '0' and CLEAN_STATE = '3' ;
C_ROW C_EMP%ROWTYPE; --定义游标变量,该变量的类型为基于游标C_EMP的记录

begin
--For 循环

FOR C_ROW IN C_EMP LOOP
-- 更新清洗记录表
update CST_TW_RECORD set GRANT_STATE = 1,GRANT_FIRST_DATE=sysdate,GRANT_DATE=sysdate,SELLER_ID = 2012999991,GRANT_REMARK = 11 where CUST_ID=C_ROW.CUST_ID ;
--更新客户表
update CST_CUSTOMER set APP_DATE = sysdate,PAST_DATE = sysdate,SELLER_ID = 2012999991,SELLER_DEPT_ID = 0001
where CUST_ID=C_ROW.CUST_ID ;
--踢出客户
UPDATE CST_CUSTOMER_EXTEND SET PUB_STATE = 1 WHERE CUST_ID =C_ROW.CUST_ID ;
end;
end LOOP;
end test;

--执行存储过程
begin
execute test ;
end;

图片说明

4个回答

linqin107412
linqin107412   2017.09.08 15:32
已采纳

首先是end loop
然后是end test
你多了一个end少年

qq_40082266
qq_40082266   2017.09.08 15:42

首先是end loop然后是end test
前面你多了一个end

maxthonghh
maxthonghh   2017.09.08 15:10

rowtype 要先 open,再使用 再 close;

qq_32504001
qq_32504001 不太明白,我记得是可以这样写的,可以的话,麻烦大神改写一下~~
3 个月之前 回复
qq_32504001
qq_32504001   2017.09.08 15:52

是这样的,刚才调试的时候把end
去掉就可以了

Csdn user default icon
上传中...
上传图片
插入图片