IF ELSE


IF ELSE

The sentence IF executes a portion of code when a condition is met. If the condition is true, then the commands will be executed. The sentence IF may be used together with the sentence ELSE. The IF ELSE statement selects between two paths of execution.
La sentencia IF ejecuta una porción de código cuando una condición se cumple. Si la condición es verdadera, entonces el bloque se ejecutará. La sentencia IF se puede usar junto con la sentencia ELSE. La sentencia IF ELSE selecciona entre dos rutas de ejecución.

Problem 1
city_bank > Create and test the stored procedure shown using Oracle.
Cree y pruebe el procedimiento almacenado que se muestra en Oracle.

MSDOS: cmd.exe
SQL> CREATE OR REPLACE PROCEDURE p_big
  2  (
  3     input INTEGER
  4  )
  5  IS
  6  BEGIN
  7     IF (input>5) THEN
  8        dbms_output.put_line(input || ' is bigger than 5');
  9     ELSE
 10        dbms_output.put_line(input || ' is not bigger than 5');
 11     END IF;
 12  END p_big;
 13  /

Procedure created.

SQL> SET SERVEROUTPUT ON;
SQL> EXECUTE p_big(10);
10 is bigger than 5

PL/SQL procedure successfully completed.

SQL> EXECUTE p_big(4);
4 is not bigger than 5

PL/SQL procedure successfully completed.


Tip
The block diagram below represents the previous stored procedure. Most programmers are familiar with block diagrams.
El diagrama de bloques de abajo representa el procedimiento almacenado previo. La mayoría de los programadores conocen los diagramas de bloques.

biggeerthan5

Problem 2
city_bank > (a) Find manually the output of the stored procedure, (b) Create and test the stored procedure shown using Oracle.
(a) Encuentre manualmente la salida del procedimiento almacenado. (b) Cree y pruebe el procedimiento almacenado que se muestra en Oracle.

MSDOS: cmd.exe
SQL> CREATE OR REPLACE PROCEDURE p_comp
  2  IS
  3     p_a NUMBER(5, 2) := 22;
  4     p_b NUMBER(5, 2) := 15;
  5  BEGIN
  6     IF (p_a < p_b) THEN
  7        p_a := 72;
  8     ELSE
  9        p_a := p_b/3;
 10        p_b := p_a/2;
 11     END IF;
 12     dbms_output.put_line(p_a || ', ' || p_b);
 13  END p_comp;
 14  /

Procedure created.

SQL> EXECUTE p_comp;
5, 2.5

PL/SQL procedure successfully completed.


Problem 3
city_bank > (a) Find manually the output of the stored procedure, (b) Create and test the stored procedure shown using Oracle.
(a) Encuentre manualmente la salida del procedimiento almacenado. (b) Cree y pruebe el procedimiento almacenado que se muestra en Oracle.

MSDOS: cmd.exe
SQL> CREATE OR REPLACE PROCEDURE p_alpha
  2  IS
  3     p_a NUMBER(5, 2):=2;
  4     p_b NUMBER(5, 2):=10;
  5     p_c NUMBER(5, 2):=12;
  6  BEGIN
  7     IF (p_a>p_b) THEN
  8        p_a := p_a * p_b;
  9     ELSE
 10        IF (p_a < p_c) THEN
 11             p_a := p_b/3;
 12        END IF;
 13        p_b := p_a/2;
 14     END IF;
 15     dbms_output.put_line(p_a || ', ' || p_b || ', ' || p_c);
 16  END p_alpha;
 17  /

Procedure created.

SQL> EXECUTE p_alpha;
3.33, 1.67, 12

PL/SQL procedure successfully completed.


Problem 4
city_bank > (a) Find manually the output of the stored procedure, (b) Create and test the stored procedure shown using Oracle.
(a) Encuentre manualmente la salida del procedimiento almacenado. (b) Cree y pruebe el procedimiento almacenado que se muestra en Oracle.

MSDOS: cmd.exe
SQL> CREATE OR REPLACE PROCEDURE p_beta
  2  IS
  3     p_a NUMBER(5, 2):=2;
  4     p_b NUMBER(5, 2):=10;
  5     p_c NUMBER(5, 2):=12;
  6  BEGIN
  7     IF (p_a > p_b) THEN
  8        p_a := p_a * p_b;
  9     ELSE
 10        IF (NOT p_a < p_c) THEN -- IF (p_a >= p_c) THEN
 11              p_a := p_b/3;
 12        END IF;
 13        p_b := p_a/2;
 14     END IF;
 15     dbms_output.put_line(p_a || ', ' || p_b || ', ' || p_c);
 16  END p_beta;
 17  /

Procedure created.


Problem 5
city_bank > (a) Create and test the stored procedure shown using Oracle. Manually find: (b) p_gamma(11), (c) p_gamma(10), (d) p_gamma(5), (e) p_gamma(1).
(a) Cree y pruebe el procedimiento almacenado que se muestra en Oracle. Encuentre manualmente: (b) p_gamma(11), (c) p_gamma(10), (d) p_gamma(5), (e) p_gamma(1).

MSDOS: cmd.exe
SQL> CREATE OR REPLACE PROCEDURE p_gamma
  2  (
  3     input NUMBER
  4  )
  5  IS
  6  BEGIN
  7     IF (input > 10) THEN
  8        dbms_output.put_line(input || ' is bigger than 10');
  9     ELSIF (input < 2) THEN
 10        dbms_output.put_line(input || ' is smaller than 2');
 11     ELSIF (input = 5) THEN
 12        dbms_output.put_line(input || ' is equal to 5');
 13     ELSE
 14        dbms_output.put_line('Hola');
 15     END IF;
 16     dbms_output.put_line('Hello');
 17  END p_gamma;
 18  /

Procedure created.

SQL> EXECUTE p_gamma(11);
11 is bigger than 10
Hello

PL/SQL procedure successfully completed.

Tip
Microsoft SQL Server supports the IF ELSE commands, however, it is not necessary to use the keyword THEN. If more than one instruction is inside an IF or ELSE block, it is necessary to use the keywords BEGIN and END, to define the beginning and end of block.
Microsoft SQL Server soporta el comando IF y ELSE, sin embargo no es necesario usar THEN. Si se requiere incluir más de una línea dentro del IF o del ELSE es necesario usar BEGIN y END para definir el inicio y el fin de bloque.

Problem 6
city_bank > Create a function called impuesto that returns the 17 % of the balance when the balance is positive, and it returns zero otherwise. Using: (a) Oracle. (b) Microsoft SQL Server.
Cree una función llamada impuesto que regrese el 17 % del balance cuando el balance es positivo, y regrese cero de otra forma. Usando: (a) Oracle. (b) Microsoft SQL Server.

MSDOS: cmd.exe
SQL> SELECT account_id,
  2  balance,
  3  impuesto(balance) as tax
  4  FROM account;

ACCOUNT_ID    BALANCE        TAX
---------- ---------- ----------
    120768     234.56      39.88
    348973   12756.56    2168.62
    678453    -456.78          0
    745363    1223.67     208.02
    987654      89.65      15.24
    348974   -1756.56          0
    678454    2456.78     417.65
    745368     323.97      55.07
    987692    2789.65     474.24

9 rows selected.

Microsoft SQL Server
SELECT account_id,
     balance,
     dbo.impuesto(balance) AS tas
FROM account;

micro_impuesto

Problem 7
city_bank > Create a procedure called p_tax. The procedure will take the Gross Income as parameter. If the Gross Income is less than 10,000.00 dollars, the program should display 15% of the Gross Income. Otherwise, the program will display 20% of the Gross Income. Using: (a) Oracle. (b) Microsoft SQL Server.
Cree un procedimiento llamado p_tax. El procedimiento toma los ingresos netos como entrada. Si los ingresos netos son menores a 10,000.00 dolares, el procedimiento mostrará el 15% de los ingresos netos. De otra forma el procedimiento mostrará el 20% de los ingresos netos. Usando: (a) Oracle. (b) Microsoft SQL Server.

MSDOS: cmd.exe
SQL> SET SERVEROUTPUT ON;
SQL> EXECUTE p_tax(5250);
For an income of   $5,250.00 your taxes are     $787.50

PL/SQL procedure successfully completed.

SQL> EXECUTE p_tax(22543);
For an income of  $22,543.00 your taxes are   $4,508.60

PL/SQL procedure successfully completed.

Microsoft SQL Server
USE city_bank;
EXECUTE p_tax 5250;

Output
For an income of  $5250.0000 your taxes are $787.50

Microsoft SQL Server
USE city_bank;
EXECUTE p_tax 22543;

Output
For an income of  $22543.0000 your taxes are $4508.60

Problem 8
city_bank > Create a function called tax. The function must take the balance of an account as input. If the balance is bigger than 1,000.00 dollars, the function returns 25 % of the balance. If the balance is 1,000.00 dollars or less but positive, then the function returns 12 % of the balance. The function returns 10.00 dollars when the balance is negative. Using: (a) Oracle. (b) Microsoft SQL Server.
Cree una función llamada tax. La función toma el balance de la cuenta como entrada. Si el balance es mayor de 1,000.00 dólares, la función regresa 25% del balance. Si el balance es 1,000.00 dólares o menos pero positivo la función regresa el 12% del balance de la cuenta. La función regresa 10.00 dólares cuando el balance es negativo. Usando: (a) Oracle. (b) Microsoft SQL Server.

MSDOS: cmd.exe
SQL> SELECT account_id,
  2  balance,
  3  tax(balance) AS tax
  4  FROM account;

ACCOUNT_ID    BALANCE        TAX
---------- ---------- ----------
    120768     234.56      28.15
    348973   12756.56    3189.14
    678453    -456.78         10
    745363    1223.67     305.92
    987654      89.65      10.76
    348974   -1756.56         10
    678454    2456.78      614.2
    745368     323.97      38.88
    987692    2789.65     697.41

9 rows selected.

Microsoft SQL Server
SELECT account_id,
     balance,
     dbo.tax(balance) AS tax
FROM account;


micro_tax

Problem 9
kimberly > Create a function called shipping_cost. Suppose that the dimensions of the items are in centimeters, the density in grams/cm3, and the cost of the material in dollars. The function takes the item_id as input. If the volume is less than 15 cm3, the cost is 3.57 dollars per cm3. Otherwise, the weight is used to compute the cost, which is 0.22 dollars per gram. Additionally, if any of the dimensions is bigger than 10 cm, there is an extra charge of 5.39 dollars. The function must return the shipping cost of the package. Using: (a) Oracle. (b) Microsoft SQL Server.
Cree una función llamada shipping_cost. Suponga que las dimensiones de los objetos están en centímetros, la densidad en gramos por centímetro cúbico, y el costo del material en dólares. La función toma el item_id como entrada. Si el volumen del objeto es menor o igual a 15 cm3, el costo es de 3.57 dólares por centímetro cúbico. De otro modo se usa el peso para calcular el costo, el cual es de 0.22 dólares por gramo. Adicionalmente, si cualquiera de las dimensiones del artículo es mayor de 10 cm se aplica un cargo extra de 5.39 dolares. La función regresa el costo de envío del paquete. Usando: (a) Oracle. (b) Microsoft SQL Server.

MSDOS: cmd.exe
SQL> SELECT name,
  2  shipping_cost(item_id) AS shipping
  3  FROM item;

NAME         SHIPPING
---------- ----------
Book               11
TV                 28
Chair              22
Bed                12
Table              30
Computer           32
CD                 54
Printer            18
Picture            48
Speaker            50

10 rows selected.

Microsoft SQL Server
SELECT name,
dbo.shipping_cost(item_id) AS cost
FROM item;

micro_shipping_cost

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home