在交易打印新余额(p_Amount)之后,我的过程应打印一条带有帐户余额的消息。我不知道交易后如何打印帐户余额。
这是一个银行系统,其过程之一是在表提款中创建一行的过程。我尝试使用INSERT,它正在工作,但是它只是添加了新行,从这里开始,我无法在交易后打印出带有帐户余额的消息。
我的桌子:
Create Table withdrawal (
WIT_ID NUMBER(9)PRIMARY KEY NOT NULL,
CUST_ID VARCHAR2(11) NOT NULL REFERENCES Customer (Cust_id) ,
ACC_ID NUMBER(8) Not NULL REFERENCES account (ACC_ID),
Amount NUMBER(10,2) NOT NULL,
DATE_TIME Date Not Null
);
我的程序:
set serveroutput on size 30000;
Create or replace procedure do_withdrawal
(
p_WIT_ID in withdrawal.WIT_ID%type,
p_cust_id in withdrawal.cust_id%type,
p_ACC_ID in withdrawal.ACC_ID%type,
p_AMOUNT in withdrawal.AMOUNT%type,
p_DATE_TIME in withdrawal.DATE_TIME%type
)
IS
L_Authority VARCHAR2(4000);
Begin
SAVEPOINT sp_sptest;
insert into WITHDRAWAL (WIT_ID,CUST_id,ACC_ID,AMOUNT,DATE_TIME)
Values (p_WIT_ID ,p_cust_id, p_ACC_ID, p_AMOUNT, p_DATE_TIME);
L_Authority := get_authority(p_cust_id,p_ACC_ID);
dbms_output.put_line('The Balance is:'|| ' ' || p_Amount );
EXCEPTION
WHEN OTHERS THEN
ROLLBACK TO sp_sptest;
dbms_output.put_line('Unauthorized user!');
COMMIT;
END;
/
我的功能:
CREATE OR REPLACE FUNCTION get_authority
(
P_CUST_ID VARCHAR2,
P_acc_id VARCHAR2
)
RETURN NUMBER
AS
P_COUNT NUMBER;
BEGIN
SELECT COUNT(*)
INTO P_COUNT
FROM account_owner
WHERE CUST_ID = P_CUST_ID AND acc_id=P_acc_id;
IF (P_COUNT > 0)then
RETURN 1;
END IF;
RETURN 0;
END;
该过程应
-在表提取中创建一行。
-声明称为未授权的异常。
-当客户无权访问该帐户时,进行未经授权的举动。(这是有效的)
-使用功能get_authority进行验证。(这是有效的)