PLSQL 3 2 Practice 1630353
PLSQL 3 2 Practice 1630353
PLSQL 3 2 Practice 1630353
com/academy
Try It / Solve It
1. State whether each of the following SQL statements can be included directly in a PL/SQL block.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their
respective owners.
2
2. Create a PL/SQL block that selects the maximum department_id in the departments table and
stores it in the v_max_deptno variable. Display the maximum department_id. Declare
v_max_deptno to be the same datatype as the department_id column. Include a SELECT
statement to retrieve the highest department_id from the departments table. Display the variable
v_max_deptno.
DECLARE
v_country_name countries.country_name%TYPE := Federative Republic of Brazil;
v_lowest_elevation countries.lowest_elevation%TYPE; v_highest_elevation
countries.highest_elevation%TYPE;
BEGIN
SELECT lowest_elevation, highest_elevation
FROM countries;
DBMS_OUTPUT.PUT_LINE('The lowest elevation in '
|| v_country_name || ' is ' || v_lowest_elevation
|| ' and the highest elevation is ' || v_highest_elevation || '.');
END;
DECLARE
v_country_name countries.country_name%TYPE := 'Federative Republic of Brazil';
v_lowest_elevation countries.lowest_elevation%TYPE;
v_highest_elevation countries.highest_elevation%TYPE;
BEGIN
SELECT MIN(lowest_elevation), MAX(highest_elevation) INTO v_lowest_elevation ,
v_highest_elevation
FROM countries;
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their
respective owners.
3
DECLARE
v_emp_lname employees.last_name%TYPE;
v_emp_salary employees.salary%TYPE;
BEGIN
SELECT last_name, salary INTO v_emp_lname, v_emp_salary
FROM employees
WHERE job_id = 'AD_PRES';
DBMS_OUTPUT.PUT_LINE(v_emp_lname || ' ' || v_emp_salary); END;
DECLARE
v_emp_lname employees.last_name%TYPE;
v_emp_salary employees.salary%TYPE;
BEGIN
END;
A. Now modify the block to use ‘IT_PROG’ instead of ‘AD_PRES’ and re-run it. Why does it fail
this time?
Por que hay varios empleados con el mismo ID
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their
respective owners.
4
B. Now modify the block to use ‘IT_PRAG’ instead of ‘IT_PROG’ and re-run it. Why does it still
fail?
Porque IT_PRAG no existe.
5. Use (but don't execute) the following code to answer this question:
DECLARE
last_name VARCHAR2(25) := 'Fay';
BEGIN
UPDATE emp_dup SET first_name = 'Jennifer'
WHERE last_name = last_name;
END;
What do you think would happen if you ran the above code? Write your answer here and then
follow the steps below to test your theory.
Marcará error porque hay redundancia
“WHERE last_name = last_name;”
B. Select the first_name and last_name values for all rows in emp_dup.
SELECT first_name, last_name
FROM emp_dup;
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their
respective owners.
5
C. Run the anonymous PLSQL block shown at the beginning of this question.
D. Select the first_name and last_name columns from emp_dup again to confirm your
theory.
E. Now we are going to correct the code so that it changes only the first name for the employee
whose last name is “Fay”. Drop emp_dup and re-create it.
drop table emp_dup;
F. Modify the code shown at the beginning of this question so that for the employee whose
last_name = ”Fay”, the first_name is updated to Jennifer. Run your modified block.
DECLARE
V_LAST_NAME VARCHAR2(25) := ‘FAY’;
BEGIN
UPDATE EMP_DUP SET FISRT_NAME = ‘JENNIFER’
WHERE LAST_NAME = V_LAST_NAME;
END;
6. Is it possible to name a column in a table the same name as the table? Create a table to test this
question. Don't forget to populate the table with data.
CREATE TABLE GRPCERY_ITEM(
PRODUCT_ID NUMBER(6,0) PRIMARY KEY,
BRAND VARCHAR2(100),
GROCERY_ITEM VARCHAR(100)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their
respective owners.
6
);
INSERT INTO GROCERY ITEM (PRODUCT_ID, BRAND, GROCERY_ITEM) VALUES
(100,’COLGATE’, ‘PASTA DENTAL’);
SI ES POSIBLE
7. Is it possible to have a column, table, and variable, all with the same name? Using the table you
created in the question above, write a PL/SQL block to test your theory.
CREATE TABLE GRPCERY_ITEM(
GROCERY_ITEM VARCHAR2(100),
GROCERY_ITEM VARCHAR(100)
);
NO ES POSIBLE
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their
respective owners.