我试图在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;
/
答案 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)
首先,创建一个序列。无论何时调用,序列都会生成一个递增的数字。有关一些不错的示例,请参阅this。 documentation也很有用。
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;