如何在 PL/SQL 中创建一个变量,其值保持不变?

How do I create a Variable in PL/SQL whose value persists?

我正在编写一个过程,其中我需要一个变量中的值,我可以更改和保留该值。

更具体地说,这需要是一个从 10001 开始并在每次调用过程时递增的计数器。我不打算 return 这个值,因为它需要连接到其他几个值,然后将被 returned(用于另一个 table 的 ID 生成)。

我研究了在 SQL PLUS 中使用绑定变量,但似乎没有帮助。我不想为这个值创建 table 。是否有允许这样做的选项?

您可能需要 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;