oracle存储过程每天重置序列问题

码农小灰 2018-06-07 04:44:06
CREATE OR REPLACE PROCEDURE p_reset_seq IS
/*
重置序列ID
*/
PN_ID NUMBER;
n number(10);
tsql varchar2(100);

BEGIN
--重置序列1
select seq_finance_income_id.nextval into n from dual;
n:=-(n-1);
tsql:='alter sequence seq_finance_income_id increment by' || (n);
execute immediate tsql;

select seq_finance_income_id.nextval into n from dual;
tsql:='alter sequence seq_finance_income_id increment by 1';//这里运行有时会报错是什么问题?
execute immediate tsql;
commit;
--重置序列2
select seq_finance_settlement_id.nextval into n from dual;
n:=-(n-1);
tsql:='alter sequence seq_finance_settlement_id increment by' || (n);
execute immediate tsql;

select seq_finance_settlement_id.nextval into n from dual;
tsql:='alter sequence seq_finance_settlement_id increment by 1';
execute immediate tsql;

commit;
END p_reset_seq;
...全文
1480 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2018-06-08
  • 打赏
  • 举报
回复
另外有一个问题,你要注意 tsql:='alter sequence seq_finance_income_id increment by ' || (n); n = 0 的时候,你要处理一下。
卖水果的net 2018-06-08
  • 打赏
  • 举报
回复
tsql:='alter sequence seq_finance_income_id increment by' || (n); execute immediate tsql; select seq_finance_income_id.nextval into n from dual; tsql:='alter sequence seq_finance_income_id increment by 1';//这里运行有时会报错是什么问题? execute immediate tsql; commit; --重置序列2 select seq_finance_settlement_id.nextval into n from dual; n:=-(n-1); tsql:='alter sequence seq_finance_settlement_id increment by' || (n); 以上标红的3 行,都有问题。 1和 3、by 后要写一个空格 , 以拼接成 by 1, 没有空格就是 by1 了。 2、// 要换成 -- ,SQL 语句中的注释是 /* */ 或 -- ,不是能是 //

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧