我正在编写一个过程,其中我需要一个变量中的值,我可以更改并保持该变量。
更具体地说,这需要是一个从10001开始的计数器,并在每次调用过程时递增。我不想返回这个值,因为它需要连接到其他几个值,然后将返回(用于另一个表的ID生成)。
我研究了在SQL PLUS中使用绑定变量似乎没有帮助。我宁愿不为这个值创建一个表。是否有允许这样做的选项?
答案 0 :(得分:5)
您可能需要sequence
create sequence proc_seq start with 1;
create or replace procedure testSeq is
begin
dbms_output.put_line('Seq is ' || proc_seq.nextVal);
end;
每次调用该过程时,该值将增加1:
SQL> exec testSeq;
Seq is 1
PL/SQL procedure successfully completed.
SQL> exec testSeq;
Seq is 2
PL/SQL procedure successfully completed.
SQL> exec testSeq;
Seq is 3
PL/SQL procedure successfully completed.
根据您的Oracle版本,您可能无法像我一样使用序列;在这种情况下,您可以使用变量来存储序列的值,使用SQL语句中的序列:
create or replace procedure testSeq is
s number;
begin
select proc_seq.nextVal into s from dual;
dbms_output.put_line('Seq is ' || s);
end;