📜  PL/SQL 事务

📅  最后修改于: 2022-05-13 01:55:18.751000             🧑  作者: Mango

PL/SQL 事务

先决条件 - PL/SQL 简介,PL/SQL |用户输入
编写一个 PL/SQL 代码,该代码将接受来自用户的帐号。检查用户余额是否小于最低余额,仅从余额中扣除 100 卢比。该进程在 acct_mstr 上触发。

示例 –考虑以下场景,

acct_master (acct_no number(5) primary key, 
                         acct_name varchar2(10), 
                            balance number(10)); 

首先,您需要创建表 acct_master,

# CREATING table acct_master 
create table acct_master(acct_no number(5) primary key, 
                                acct_name varchar2(10), 
                                   balance number(10)); 

将这些数据插入表中,

# INSERTING data in acct_mstr
insert into acct_master values(1, 'aaa', 1000)
insert into acct_master values(2, 'bbb', 100)
insert into acct_master values(3, 'ccc', 1100)
insert into acct_master values(4, 'ddd', 700)
insert into acct_master values(5, 'eee', 1700) 

使用的方法——

  • 步骤 1:声明变量并在其中一个变量中设置最小余额。
  • 步骤2:从用户那里获取帐号输入。
  • Step-3:将该用户的余额选择为一个变量。
  • Step-4:检查余额是否小于最低余额。
  • Step-5:如果余额较少,则将表中的余额更新为余额=余额-100,并从存储余额的变量中减去100后显示余额。然后,显示输出。
  • 第 6 步:否则只需打印该值。

请注意,所有绿色文本都是注释。

以下是所需的实现:

-- DECLARING VARIABLES
DECLARE 
xacct_no number(5);
  
-- here, minimum balance is set to 1000;
xmin_bal number(5):=1000; 
xbalance number(5);
  
BEGIN
  
-- taking input from user
xacct_no:=&xacct_no; 
  
-- selecting balance of that user INTO "xbalance";
select balance into xbalance 
from acct_master 
where acct_no=xacct_no; 
  
-- if condition true, updating balance 
-- with balance = balance - 100 
IF(xbalance < xmin_bal) THEN --condition check
update acct_master 
set balance=balance-100 
where acct_no=xacct_no; 
                          
-- remaining amount                                                                 
xbalance:=xbalance-100; 
dbms_output.put_line('Rs 100 is deducted 
               and current balance is '||xbalance);
  
-- if condition is false 
ELSE             
dbms_output.put_line('Current balance is '||xbalance);
  
--ENDING IF 
END IF;    
  
-- ENDING OF BEGIN
END; 
  
/     -- FOR DISPLAYING OUTPUT IN SCREEN

输出:

Enter value for xacct_no: 2
old 6: xacct_no:=&xacct_no;
new 6: xacct_no:=2;
Rs 100 is deducted and current balance is 0

PL/SQL procedure successfully completed.

SQL> /
Enter value for xacct_no: 3
old   6: xacct_no:=&xacct_no;
new   6: xacct_no:=3;
Current balance is 1100

PL/SQL procedure successfully completed.