Oracle PL/SQL过程-票证系统

Oracle PL/SQL过程-票证系统,oracle,plsql,Oracle,Plsql,我正在尝试用PL/SQL为我的网站的票证系统创建一个过程。 我想要一个简单的过程,将一些数据保存到数据库中。 它将有用户的名字(random VARCHAR2)和一个数字以及今天的日期作为输入 调用此过程时,它将自动提高数据库中的一个数字(可能是主键),并将输入添加到数据库中。但是我不知道如何让更多的人一次访问它 有人能帮忙吗 对于那些想知道我已经拥有了什么的人 CREATE OR REPLACE PROCEDURE VoegBoeteToe (v_speler IN number, v_dat

我正在尝试用PL/SQL为我的网站的票证系统创建一个过程。 我想要一个简单的过程,将一些数据保存到数据库中。 它将有用户的名字(random VARCHAR2)和一个数字以及今天的日期作为输入

调用此过程时,它将自动提高数据库中的一个数字(可能是主键),并将输入添加到数据库中。但是我不知道如何让更多的人一次访问它

有人能帮忙吗

对于那些想知道我已经拥有了什么的人

CREATE OR REPLACE PROCEDURE VoegBoeteToe
(v_speler IN number, v_date IN date, v_boete IN number)
IS VoegBoeteToe
DECLARE
v_nextNum NUMBER;

BEGIN
SELECT BETALINGSNR
INTO v_nextNum
FROM BOETES
ORDER BY BETALINGSNR DESC;

v_nextNum := v_nextNum + 1;

INSERT INTO BOETES VALUES(v_nextNum,v_speler,v_date,v_boete);

end;
/

您需要创建序列

CREATE SEQUENCE DUMMY_SEQ
/
然后在您的代码中可以使用如下内容:


从dual选择DUMMY_SEQ.NEXTVAL进入myVar

首先,创建一个序列。每当调用序列时,它都会生成一个不断递增的数字。请参阅以获取一些好的示例。这也可能有用

CREATE SEQUENCE user_sequence
START WITH 1000                   -- your sequence will start with 1000
INCREMENT BY 1;                   -- each subsequent number will increment by 1
那么


过程的第四行应该是
IS
,而不是
IS VoegBoeteToe
。此外,删除过程中不需要的第五行(
DECLARE
)。并使用序列安全地导出序列号

因此,当所有这些都说了又做了之后,您的过程应该如下所示:

CREATE SEQUENCE BOETES_SEQ;

CREATE OR REPLACE PROCEDURE VoegBoeteToe
(v_speler IN number, v_date IN date, v_boete IN number)
IS
BEGIN
  INSERT INTO BOETES VALUES(BOETES_SEQ.NEXTVAL,v_speler,v_date,v_boete);  
end;
在插入值的BOETES表中包含字段名列表也是一个非常好的主意。这将使任何需要维护代码的人生活得更好,并可能使您避免犯一些错误


分享并享受。

感谢您的评论,这可能是重复的,但这与间隔无关。是我的程序出错了。此处不允许出现列错误。错误在哪一行?顺便说一句,如果表中有多行,您的选择将引发太多行异常
CREATE SEQUENCE BOETES_SEQ;

CREATE OR REPLACE PROCEDURE VoegBoeteToe
(v_speler IN number, v_date IN date, v_boete IN number)
IS
BEGIN
  INSERT INTO BOETES VALUES(BOETES_SEQ.NEXTVAL,v_speler,v_date,v_boete);  
end;