ORACLE修改序列值为表内某字段(主键)最大值

ORACLE修改序列值为表内某字段(主键)最大值

想修改序列值,网上基本的都是自己看要加到多少,然后要么调步长,要么删了重建。
想直接用declare使用标量然后调,但是逻辑里面不能有DDL语句。
不过最后解决了
直接上代码:

-- 删除原序列
drop sequence txxx_s;
declare
             maxid integer;  -- 最大ID变量
             v_cursor integer;  -- 游标
             v_sql varchar2(500);  -- sql
begin
 -- 将最大的id插入到变量中
     select max(id) into maxid from txxx;
     v_cursor:=dbms_sql.open_cursor;
     v_sql:= 'create sequence txxx_s start with ' || maxid ;
     dbms_sql.parse(v_cursor, v_sql, dbms_sql.v7);
     dbms_sql.close_cursor(v_cursor);
    
end;

参考:
PL/SQL块中不能直接执行DDL语句(错误)


傻逼了我,原来还有更简单的,然后没有其他权限风险的。。。我也不知道上面为什么执行DDL语句会报错- -,直接execute就好了嘛。。
最新代码:

drop sequence txxx_s;
declare
             maxid integer;
             v_sql varchar2(500);
begin
     select max(id)+1 into maxid from txxx;
     v_sql:= 'create sequence txxx_s start with ' || maxid ;
     EXECUTE IMMEDIATE v_sql;
    
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值