动态生成序列

新建序列的语句
declare
  v_sql  varchar2(200);
  v_cnt  number(10);
  iCount number := 0; --查询结果
begin
  for v_tab in (select table_name from user_tables t) loop
    --查看表是否有ID字段
    v_sql := 'select count(*) as num from USER_TAB_COLUMNS  where TABLE_NAME = ''' ||
             v_tab.table_name || ''' AND COLUMN_NAME = ''ID''';
    Execute Immediate v_sql
      into iCount;
  
    IF iCount is not null and iCount > 0 THEN
      v_sql := 'select nvl(max(ID),0) from ' || v_tab.table_name;
    else
      v_sql := 'select count(1) from ' || v_tab.table_name;
    END IF;
  
    execute immediate v_sql
      into v_cnt;
    dbms_output.put_line('drop sequence SEQ_' || v_tab.table_name || ';');
    dbms_output.put_line('create sequence SEQ_' || v_tab.table_name ||
                         ' minvalue 1 maxvalue 9999999999999999999999999999 start with ' ||
                         (v_cnt + 1) || ' increment by 1 cache 20;');
  end loop;
end;

导出序列的语句
select 'create sequence '||sequence_name||    
       ' minvalue '||min_value||    
       ' maxvalue '||max_value||    
       ' start with '||last_number||    
       ' increment by '||increment_by||    
       (case when cache_size=0 then ' nocache' else ' cache '||cache_size end) ||';'  
from user_sequences 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值