gpt4 book ai didi

oracle - 如何在 PL/SQL 中创建值持续存在的变量?

转载 作者:行者123 更新时间:2023-12-01 16:50:30 24 4
gpt4 key购买 nike

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

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

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

最佳答案

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

关于oracle - 如何在 PL/SQL 中创建值持续存在的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41187785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com