oracle中的序列创建

时间:2011-05-19 10:26:27

标签: oracle oracle10g

我想在oracle中创建一个序列,其中列字段(Empid)的最大值必须是序列的最小值。

以下是我在同一个stackexchange中找到的那个

create sequence mytemp_seq start with &v_Startval;

此命令提示我输入我必须输入的列名称的最大值。

如何在没有提示的情况下修复& v_startval的值,但直接设置以下语句中的值

select max(empid) from mytemp..

我正在尝试以下

create sequence mytemp_seq start with (SELECT MAX(empid) from mytemp)

但它不起作用。

2 个答案:

答案 0 :(得分:7)

你可以用一些PL / SQL来做到这一点:

declare
  v_startval integer;
begin
  select max(empid)+1 into v_startval from mytemp;
  execute immediate 'create sequence mytemp_seq start with ' || v_startval;
end;

答案 1 :(得分:5)

在sqlplus中你可以做到

col max_id new_value seq_min_val  
SELECT MAX(empid)+1 AS max_id from mytemp;
create sequence mytemp_seq start with &seq_min_val;