使用Oracle Procedure从表中获取下一个卷号

时间:2017-02-12 05:50:01

标签: oracle11g

create or replace procedure "FINDMAX"
(maxroll OUT NUMBER)
is
begin
select max(rollno) into maxroll from std;
end;​

在这段代码maxroll我采取了制作程序和rollno我把它作为数据库字段。这给了我表中的最大(最后)卷号。 任何人都可以建议我如何获得下一卷数(最大+ 1)?

2 个答案:

答案 0 :(得分:1)

对于您的直接问题,您可以使用max(col) + 1

create or replace procedure "FINDMAX"
(maxroll OUT NUMBER)
is
begin
  select 1 + max(rollno) into maxroll from std;
end;​

但是如果你在插入下一张唱片时使用它,那就不是正确的了。

您应该使用序列。

create sequence roll_no_seq start with 1 increment by 1;

然后在使用roll_no_seq.nextval

插入时使用它

答案 1 :(得分:0)

使用SEQUENCE

CREATE SEQUENCE rollno_seq
    START WITH     1
    INCREMENT BY   1
    NOCACHE
    NOCYCLE;

然后你可以使用,

select rollno_seq.nextval from dual;

另见Basic Elements of Oracle SQL: CURRVAL and NEXTVAL