如下代码:
 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流程里,为什么一执行后就报错?
请问是不是不能这样写?

解决方案 »

  1.   

    报了什么错?
    请检查权限.
    grant alter sequence to user_name
      

  2.   

    报了个出现符号"alter"在需要下列之一的错误~~
      

  3.   

    我运行了grant alter sequence to SEQ_TMP_LJY_XHKX_DZ_DID 报错缺少或者无效权限
    但我把alter sequence SEQ_TMP_LJY_XHKX_DZ_DID increment by -1; 单独拿出来运行可以运行啊~这是权限问题?
    如果是,要如何开启权限?
      

  4.   

     select to_char(ddate,'yyyymmdd') into v_ddate from (select ddate from tmp_ljy_xhkx_dingzhi order by ddate desc) where rownum=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;
    我改成这样还是报错啊,是不是不能和流程写在一起啊?