创建了如下过程:
create or replace
PROCEDURE TEST AS
BEGIN
DECLARE
c_service process_state.service%type;
c_tr_source process_state.tr_source%type;
CURSOR c_process_state is
SELECT service, tr_source FROM process_state;
OPEN c_process_state;
LOOP
FETCH c_process_state into c_service, c_tr_source;
insert into process_state_archive values (c_service, c_tr_source);
commit;
EXIT WHEN c_process_state%notfound;
END LOOP;
CLOSE c_process_state;
END TEST;
编译后我遇到了一些错误:
错误(33,4):PLS-00103:遇到以下其中一项时遇到符号“FETCH”:常量异常表long double ref char time timestamp interval date
错误(44,4):PLS-00103:遇到以下其中一项时遇到符号“CLOSE”:end not pragma final instantiable volgorde覆盖静态成员构造函数映射
任何人都可以解释一下这个问题吗?我是初学者,学习SQL .
1 回答
1)你应该在BEGIN之前但不在之后声明游标,并且EXIST WHEN应该在FETCH之后立即声明
2)你的任务似乎可以在一个语句中解决,而不是用光标代码很多代码: