如何在过程PLSQL中打印出带有帐户余额的消息?

时间:2019-01-10 17:32:02

标签: sql oracle plsql

在交易打印新余额(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进行验证。(这是有效的)

0 个答案:

没有答案