PL / SQL过程 - 票证系统

时间:2014-07-07 10:13:35

标签: oracle plsql

我试图在PL / SQL中为我的网站制作一个票务系统程序。 我想要一个简单的过程,将一些数据保存到数据库中。 它将具有用户名(随机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;
/

3 个答案:

答案 0 :(得分: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表中包含字段名称列表也是一个非常好的主意。这将使任何必须维护代码的人的生活更美好,并且可以避免您犯一些错误。

分享并享受。

答案 1 :(得分:0)

您需要创建SEQUENCE

CREATE SEQUENCE DUMMY_SEQ
/

然后在你的代码中你可以使用类似的东西:

select DUMMY_SEQ.NEXTVAL into myVar from dual;

答案 2 :(得分:0)

首先,创建一个序列。无论何时调用,序列都会生成一个递增的数字。有关一些不错的示例,请参阅thisdocumentation也很有用。

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

然后,

SELECT user_sequence.NEXTVAL INTO v_nextNum FROM DUAL;