oracle中的序列创建

use*_*571 5 oracle oracle10g

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

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

create sequence mytemp_seq start with &v_Startval;
Run Code Online (Sandbox Code Playgroud)

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

如何在不提示的情况下修复&v_startval的值,而是直接设置以下语句中的值

select max(empid) from mytemp..
Run Code Online (Sandbox Code Playgroud)

我想在下面这样做

create sequence mytemp_seq start with (SELECT MAX(empid) from mytemp)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

Ton*_*ews 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;
Run Code Online (Sandbox Code Playgroud)


sch*_*rik 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;
Run Code Online (Sandbox Code Playgroud)