高手帮忙看看这段代码,是oracle8.0的存储过程,编译不过去。
CREATE OR REPLACE PROCEDURE "BSFF ". "DEPOSIT " (APROVIDERID IN
VARCHAR,ACARDID IN VARCHAR,ABOOKCOUNT IN NUMBER,ABOOKPRICE IN
NUMBER,ATOTALMONEY IN NUMBER,AOPERATION IN VARCHAR,AREMARK IN VARCHAR)
AS
V_COUNT NUMBER;
V_BALANCE NUMBER;
BEGIN
SELECT COUNT(*) INTO V_COUNT FROM "ACCOUNT " WHERE PROVIDERID=APROVIDERID;
IF V_COUNT=0 THEN
INSERT INTO "ACCOUNT "(PROVIDERID,BALANCE) VALUES(APROVIDERID,0);
END IF;
SELECT BALANCE + ATOTALMONEY INTO V_BALANCE FROM "ACCOUNT " WHERE PROVIDERID = APROVIDERID;
IF V_BALANCE > 0 THEN
UPDATE "ACCOUNT " SET BALANCE = BALANCE + ATOTALMONEY WHERE PROVIDERID = APROVIDERID;
INSERT INTO WASTEBOOK(PROVIDERID,CARDID,BUYDATE,BOOKCOUNT,BOOKPRICE,TOTALMONEY,BALANCE,OPERATION,REMARK)
VALUES(APROVIDERID,ACARDID,SYSDATE,ABOOKCOUNT,ABOOKPRICE,ATOTALMONEY,V_BALANCE,AOPERATION,AMREMARK);
END IF;
END DEPOSIT;
高手帮看看,随便给优化一下。谢谢
------解决方案--------------------未commit
CREATE OR REPLACE PROCEDURE "BSFF ". "DEPOSIT "
(APROVIDERID IN VARCHAR,
ACARDID IN VARCHAR,
ABOOKCOUNT IN NUMBER,
ABOOKPRICE IN NUMBER,
ATOTALMONEY IN NUMBER,
AOPERATION IN VARCHAR,
AREMARK IN VARCHAR)
AS
V_COUNT NUMBER;
V_BALANCE NUMBER;
BEGIN
SELECT COUNT(*) INTO V_COUNT
FROM "ACCOUNT "
WHERE PROVIDERID=APROVIDERID;
IF V_COUNT=0 THEN
INSERT INTO "ACCOUNT "(PROVIDERID,BALANCE) VALUES(APROVIDERID,0);
COMMIT; -------APPENDED
END IF;
SELECT BALANCE + ATOTALMONEY INTO V_BALANCE
FROM "ACCOUNT "
WHERE PROVIDERID = APROVIDERID;
IF V_BALANCE > 0 THEN
UPDATE "ACCOUNT " SET BALANCE = BALANCE + ATOTALMONEY WHERE PROVIDERID = APROVIDERID;
INSERT INTO WASTEBOOK(PROVIDERID,CARDID,BUYDATE,BOOKCOUNT,BOOKPRICE,TOTALMONEY,BALANCE,OPERATION,REMARK)
VALUES(APROVIDERID,ACARDID,SYSDATE,ABOOKCOUNT,ABOOKPRICE,ATOTALMONEY,V_BALANCE,AOPERATION,AMREMARK);
COMMIT; -------APPENDED
END IF;
END DEPOSIT;