如下代码:
if v_ddate!=to_char(sysdate,'yyyymmdd') then
alter sequence SEQ_TMP_LJY_XHKX_DZ_DID increment by -1;
select SEQ_TMP_LJY_XHKX_DZ_DID.CURRVAL into v_cnt from dual;
if v_cnt!=999999 then
loop
select SEQ_TMP_LJY_XHKX_DZ_DID.nextval from dual;
select SEQ_TMP_LJY_XHKX_DZ_DID.CURRVAL into v_cnt from dual;
exit when v_cnt=999999;
end loop;
end if;
alter sequence SEQ_TMP_LJY_XHKX_DZ_DID increment by 1;
这段代码是写在procedure流程里,为什么一执行后就报错?
请问是不是不能这样写?
if v_ddate!=to_char(sysdate,'yyyymmdd') then
alter sequence SEQ_TMP_LJY_XHKX_DZ_DID increment by -1;
select SEQ_TMP_LJY_XHKX_DZ_DID.CURRVAL into v_cnt from dual;
if v_cnt!=999999 then
loop
select SEQ_TMP_LJY_XHKX_DZ_DID.nextval from dual;
select SEQ_TMP_LJY_XHKX_DZ_DID.CURRVAL into v_cnt from dual;
exit when v_cnt=999999;
end loop;
end if;
alter sequence SEQ_TMP_LJY_XHKX_DZ_DID increment by 1;
这段代码是写在procedure流程里,为什么一执行后就报错?
请问是不是不能这样写?
请检查权限.
grant alter sequence to user_name
但我把alter sequence SEQ_TMP_LJY_XHKX_DZ_DID increment by -1; 单独拿出来运行可以运行啊~这是权限问题?
如果是,要如何开启权限?
if v_ddate!=to_char(sysdate,'yyyymmdd') then
declare
v_cnt number;
begin
execute immediate 'alter sequence SEQ_TMP_LJY_XHKX_DZ_DID increment by -1';
select SEQ_TMP_LJY_XHKX_DZ_DID.CURRVAL into v_cnt from dual;
if v_cnt!=999999 then
loop
select SEQ_TMP_LJY_XHKX_DZ_DID.nextval from dual;
select SEQ_TMP_LJY_XHKX_DZ_DID.CURRVAL into v_cnt from dual;
exit when v_cnt=999999;
end loop;
end if;
execute immediate 'alter sequence SEQ_TMP_LJY_XHKX_DZ_DID increment by 1';
end;
我改成这样还是报错啊,是不是不能和流程写在一起啊?