我想在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)
但它不起作用.
你可以用一些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)
在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)
归档时间: |
|
查看次数: |
936 次 |
最近记录: |