Transacciones PL/SQL

Prerrequisitos – Introducción a PL/SQL , PL/SQL | Entrada del usuario
Escriba un código PL/SQL que aceptará un número de cuenta del usuario. Verifique si el saldo del usuario es inferior al saldo mínimo que solo deduzca Rs 100 del saldo. El proceso se activa en acct_mstr.

Ejemplo: considere el siguiente escenario,

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

Primero, debe crear la tabla acct_master,

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

Inserte estos datos en la tabla,

# 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) 

Enfoque utilizado –

  • Paso 1: Declarar variables y establecer un saldo mínimo en una variable.
  • Paso 2: Tome la entrada del número de cuenta del usuario.
  • Paso 3: seleccione el saldo de ese usuario en una variable.
  • Paso 4: compruebe si el saldo es inferior al saldo mínimo o no.
  • Paso 5: si el saldo es menor, actualice el saldo en la tabla con saldo = saldo -100 y muestre el saldo después de deducir 100 de esa variable en la que se almacenó el saldo. Luego, muestre la salida.
  • Paso 6: De lo contrario, simplemente imprima el valor.

Tenga en cuenta que todo el texto en color verde son comentarios.

A continuación se muestra la implementación requerida:

-- 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

Producción:

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. 

Publicación traducida automáticamente

Artículo escrito por Rohit_ranjan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *