我想在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)
但它不起作用。
答案 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;