1. PL/SQL is an Oracle proprietary, procedural, 4GL programming language.
True or False? (1) Points
True
False (*)
Correct
2. The P in PL/SQL stands for: (1) Points
Processing
Procedural (*)
Primary
Proprietary
Correct
3. A program which specifies a list of operations to be pe
rformed sequentially to achieve the desired result can be called: (1) Poin
ts
declarative
nondeclarative
procedural (*)
low level
Correct
4. What kind of block is defined by the following PL/SQL c
ode?
BEGIN
DBMS_OUTPUT.PUT_LINE('My first quiz');
END;
(1) Points
procedure
subroutine
function
anonymous (*)
Correct
5. Which of the following tools can NOT be used to develop
and test PL/SQL code? (1) Points
Oracle Jdeveloper
Oracle Application Express
Oracle JSQL (*)
Oracle iSQL*Plus
Incorrect. Refer to Section 1 Lesson 3.
6. Which component of Oracle Application Express is used t
o enter and run SQL statements and PL/SQL blocks? (1) Points
Application Builder
SQL Workshop (*)
Utilities
Object Browser
Incorrect. Refer to Section 1 Lesson 3.
7. Every PL/SQL anonymous block must start with the keywor
d DECLARE. True or False? (1) Points
True
False (*)
Correct
8. Which PL/SQL block type must return a value? (1) Poin
ts
Anonymous
Function (*)
Procedure
Correct
9. Given below are the parts of a PL/SQL block:
1. END;
2. EXCEPTION
3. DECLARE
4. BEGIN
Arrange the parts in order.
(1) Points
2,1,4,3
3,4,2,1 (*)
3,2,4,1
4,3,2,1
Correct
10. Using Oracle Application Express, you can create Web ap
plications that include PL/SQL. True or False? (1) Points
True (*)
False
Correct
11. The fact that PL/SQL is portable is a good thing because: (1) Poin
ts
Exceptions can be ported to different operating systems
Blocks can be sent to the operating system.
PL/SQL code can be developed on one platform and deployed on another (*)
PL/SQL code can be run on any operating system without a database
Correct
12. Which of the following can you use PL/SQL to do?
(1) Points
Update data (DML)
Develop Web applications using the Web Application Toolkit
Manage database security
Create customized reports
All of the above (*)
Incorrect. Refer to Section 1 Lesson 2.
Section 2
13. Which statements about lexical units are true? (Choose
two.) (1) Points
(Choose all correct answers)
They are named objects stored in the database
They are the building blocks of every PL/SQL program (*)
They are optional but can make a PL/SQL block execute faster
They are sequences of characters including letters, digits, tabs, return
s and symbols (*)
Incorrect. Refer to Section 2 Lesson 2.
14. Which of the following are PL/SQL lexical units? (Choos
e two.) (1) Points
(Choose all correct answers)
Identifiers (*)
Table Columns
Reserved Words (*)
Anonymous Blocks
SQL Workshop
Incorrect. Refer to Section 2 Lesson 2.
15. Valid identifiers begin with a (1) Points
Number
Letter (*)
Special character
Correct
16. Examine the following code. At Line A, we want to assig
n a value of 22 to the outer block's variable v_myvar. What code should we write
at Line A?
<<outer_block>>
DECLARE
v_myvar NUMBER;
BEGIN
<<inner_block>>
DECLARE
v_myvar NUMBER := 15;
BEGIN
-- Line A
END;
END;
(1) Points
outer_block.v_myvar := 22; (*)
v_myvar := 22;
<<outer_block>>.v_myvar := 22;
v_myvar(outer_block) := 22;
We cannot reference the outer block's variable because both variables ha
ve the same name
Correct
17. An exception occurs within the inner block of two neste
d blocks. The inner block does not have an EXCEPTION section. What always happen
s? (1) Points
Both blocks fail and an error message is displayed by the calling enviro
nment
The exception is propagated to the outer block (*)
Oracle automatically tries to re-execute the inner block
The user's database session is automatically disconnected
Correct
18. In the following code, Line A causes an exception. What
value will be displayed when the code is executed?
DECLARE
outer_var VARCHAR2(50) := 'My';
BEGIN
outer_var := outer_var || ' name';
DECLARE
inner_var NUMBER;
BEGIN
inner_var := 'Mehmet'; -- Line A
outer_var := outer_var || ' is';
END;
outer_var := outer_var || ' Zeynep';
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(outer_var);
END;
(1) Points
My
My name (*)
My name is
My name is Zeynep
Correct
19. When nested blocks are used, which blocks can or must b
e labeled? (1) Points
The inner block must be labeled, the outer block can be labeled.
Both blocks must be labeled
Nested blocks cannot be labeled
The outer block must be labeled if it is to be referred to in the inner
block. (*)
Incorrect. Refer to Section 2 Lesson 6.
20. What will be displayed when the following code is execu
ted?
DECLARE
varA NUMBER := 12;
BEGIN
DECLARE
varB NUMBER := 8;
BEGIN
varA := varA + varB;
END;
DBMS_OUTPUT.PUT_LINE(varB);
END;
(1) Points
12
Nothing, the block will fail with an error (*)
20
VarB
Correct
21. Which good programming practice guideline would make this code easier t
o read?
DECLARE
v_sal NUMBER(8,2);
BEGIN
SELECT salary INTO v_sal
FROM employees WHERE employee_id = 100;
UPDATE employees SET salary = v_sal;
END;
(1) Points
Declaring variables using %TYPE
Indenting each level of code (*)
Using a consistent naming convention for variables
Avoiding implicit data type conversions
Incorrect. Refer to Section 2 Lesson 7.
22. What good programming practice would make this code eas
ier to follow?
DECLARE
v_myvar VARCHAR2(20);
BEGIN
DECLARE
v_myvar VARCHAR2(15);
BEGIN
...
END;
END;
(1) Points
Using a consistent naming convention for variables
Labeling the blocks (*)
Avoid using column names as identifiers
Developing a case convention for the code
Incorrect. Refer to Section 2 Lesson 7.
23. Using standards for naming conventions is recommended.
True or False? (1) Points
True (*)
False
Incorrect. Refer to Section 2 Lesson 7.
24. Which of the following declarations is invalid?
(1) Points
v_count PLS_INTEGER:=0;
college_name VARCHAR2(20):='Harvard';
v_pages CONSTANT NUMBER; (*)
v_start_date DATE := sysdate+1;
Incorrect. Refer to Section 2 Lesson 4.
25. If you are using the %TYPE attribute, you can avoid har
d coding the: (1) Points
Data type (*)
Table name
Column name
Constraint
Incorrect. Refer to Section 2 Lesson 4.
26. Which of the following should NOT be used as the name o
f a variable? (1) Points
A table name.
A table column name. (*)
The database name.
Incorrect. Refer to Section 2 Lesson 4.
27. Which statement most closely describes "data type"?
(1) Points
It is the value of a variable.
It specifies a storage format, constraints, and a valid range of values
for a variable. (*)
It allows different kinds of data to be stored in a single variable.
It is used to test if errors have occurred.
Incorrect. Refer to Section 2 Lesson 3.
28. ______ are meant to store large amounts of data.
(1) Points
Variables
Scalar data types
LOBs (*)
Incorrect. Refer to Section 2 Lesson 3.
29. A movie is an example of which category of data type?
(1) Points
Scalar
Composite
Reference
LOB (*)
Incorrect. Refer to Section 2 Lesson 3.
30. What is wrong with this assignment statement?
myvar := 'To be or not to be';
'That is the question';
(1) Points
An assignment statement must be a single line of code
Nothing is wrong, the statement is fine
An assignment statement must have a single semicolon at the end (*)
"myvar" is not a valid name for a variable
Character literals should not be enclosed in quotes
Incorrect. Refer to Section 2 Lesson 5.
31. The DECODE function is available in PL/SQL procedural statements. True
or False? (1) Points
True
False (*)
Correct
32. Single row character functions are valid SQL functions
in PL/SQL. True or False? (1) Points
True (*)
False
Incorrect. Refer to Section 2 Lesson 5.
33. PL/SQL can convert a VARCHAR2 value containing alphabet
ic characters to a NUMBER value. True or False? (1) Points
True
False (*)
Incorrect. Refer to Section 2 Lesson 5.
34. Which of the following are disadvantages of implicit da
ta type conversions? (Choose two.) (1) Points
(Choose all correct answers)
The code is harder to read and understand (*)
You cannot store alphabetic characters in a variable of data type NUMBER
If Oracle changes the conversion rules in the future, your code may not
work any more (*)
Oracle cannot implicitly convert a number value to a character string
Incorrect. Refer to Section 2 Lesson 5.
35. TO_NUMBER, TO_CHAR, and TO_DATE are all examples of:
(1) Points
Implicit conversion functions
Explicit conversion functions (*)
Character functions
Operators
Incorrect. Refer to Section 2 Lesson 5.
36. Which of the following are valid assignment statements?
(Choose two.) (1) Points
(Choose all correct answers)
v_string = 'Hello';
v_string := Hello;
v_number := 17 + 34; (*)
v_string := 'Hello'; (*)
v_date := 28-DEC-06;
Incorrect. Refer to Section 2 Lesson 5.
37. What is the output when the following program is execut
ed?
set serveroutput on
DECLARE
a VARCHAR2(10) := '333';
b VARCHAR2(10) := '444';
c PLS_INTEGER;
d VARCHAR2(10);
BEGIN
c := TO_NUMBER(a) + TO_NUMBER(b);
d := a || b;
DBMS_OUTPUT.PUT_LINE(c);
DBMS_OUTPUT.PUT_LINE(d);
END;
(1) Points
Nothing. The code will result in an error.
c=777 and d=333444 (*)
c=777 and d=777
c=333444 and d=777
Incorrect. Refer to Section 2 Lesson 5.
38. Identify which of the following assignment statements a
re valid. (Choose three.) (1) Points
(Choose all correct answers)
v_last_name := Chandra;
v_blackout_date := '31-DEC-2006'; (*)
v_population := 333444; (*)
v_music_type := 'ROCK'; (*)
Incorrect. Refer to Section 2 Lesson 1.
39. Evaluate the following declaration. Determine whether o
r not it is legal.
DECLARE
maxsalary NUMBER(7) = 5000;
(1) Points
Correct.
Not correct. (*)
Correct
40. When a variable is defined using the NOT NULL keywords,
the variable must contain a value. True or False? (1) Points
True (*)
False
Incorrect. Refer to Section 2 Lesson 1.
41. Is the following variable declaration correct or not ?
DECLARE
display_qty CONSTANT NUMBER;
(1) Points
Correct.
Not correct. (*)
Correct
Section 3
42. There are no employees in Department 77. What will happe
n when the following block is executed?
BEGIN
DELETE FROM employees
WHERE department_id=77;
DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);
END;
(1) Points
A NO_DATA_FOUND exception is raised.
A NULL is displayed.
A zero (0) is displayed. (*)
An exception is raised because the block does not contain a COMMIT state
ment.
Incorrect. Refer to Section 3 Lesson 3.
43. Which is the correct way to erase one row from a table?
(1) Points
REMOVE employee_id=100
FROM employees;
DROP TABLE employees
WHERE employee_id=100;
TRUNCATE employees
WHERE employee_id=100;
DELETE FROM employees
WHERE employee_id=100;
(*)
Incorrect. Refer to Section 3 Lesson 3.
44. A PL/SQL block includes the following statement:
SELECT last_name INTO v_last_name
FROM employees
WHERE employee_id=100;
What is the value of SQL%ISOPEN immediately after the SELECT statement is execut
ed?
(1) Points
True
False (*)
Null
Error. That attribute does not apply for implicit cursors.
Correct
45. The following anonymous block of code is run:
BEGIN
INSERT INTO countries (id, name)
VALUES ('XA', 'Xanadu');
SAVEPOINT XA;
INSERT INTO countries (id, name)
VALUES ('NV','Neverland');
COMMIT;
ROLLBACK TO XA;
END;
What happens when the block of code finishes?
(1) Points
No data is inserted and no errors occur.
No data is inserted and an error occurs
Two rows are inserted and no errors occur.
Two rows are inserted and an error occurs. (*)
Incorrect. Refer to Section 3 Lesson 4.
46. Which of the following best describes a database transa
ction? (1) Points
All the DML statements in a single PL/SQL block
A related set of SQL DML statements which must be executed either comple
tely or not at all (*)
A single SQL statement that updates multiple rows of a table
A SELECT statement based on a join of two or more database tables
Correct
47. Which of the following is NOT a good guideline for retr
ieving data in PL/SQL? (1) Points
Declare the receiving variables using %TYPE
The WHERE clause is optional in nearly all cases. (*)
Specify the same number of variables in the INTO clause as database colu
mns in the SELECT clause.
THE SELECT statement should fetch exactly one row.
Incorrect. Refer to Section 3 Lesson 2.
48. A variable is declared as:
DECLARE
v_salary [Link]%TYPE;
BEGIN
Which of the following is a correct use of the INTO clause?
(1) Points
SELECT salary
INTO v_salary
FROM employees
WHERE employee_id=100;
(*)
SELECT v_salary
INTO salary
FROM employees
WHERE employee_id=100;
SELECT salary
FROM employees
INTO v_salary;
SELECT salary
FROM employees
WHERE employee_id=100
INTO v_salary;
Incorrect. Refer to Section 3 Lesson 2.
49. Which one of these SQL statements can be directly inclu
ded in a PL/SQL executable block? (1) Points
DELETE FROM employees
WHERE department_id=60;
(*)
SELECT salary FROM employees
WHERE department_id=60;
CREATE TABLE new_emps (last_name VARCHAR2(10), first_name VARCHAR2(10));
DROP TABLE locations;
Incorrect. Refer to Section 3 Lesson 2.
50. Which rows will be deleted from the EMPLOYEES table whe
n the following code is executed?
DECLARE
salary [Link]%TYPE := 12000;
BEGIN
DELETE FROM employees
WHERE salary > salary;
END;
(1) Points
All rows whose SALARY column value is greater than 12000.
All rows in the table.
No rows. (*)
All rows whose SALARY column value is equal to 12000.
Correct
1. Every PL/SQL anonymous block must start with the keyword DECLARE. True
or False? (1) Points
True
False (*)
Correct
2. In which part of the PL/SQL block are declarations of v
ariables defined? (1) Points
Executable
Exception
Declarative (*)
Definition
Correct
3. Which PL/SQL block type must return a value? (1) Poin
ts
Anonymous
Function (*)
Procedure
Correct
4. Which component of Oracle Application Express is used t
o enter and run SQL statements and PL/SQL blocks? (1) Points
Application Builder
SQL Workshop (*)
Utilities
Object Browser
Incorrect. Refer to Section 1 Lesson 3.
5. Which keywords must be included in every PL/SQL block?
(Choose two.) (1) Points
(Choose all correct answers)
DECLARE
END; (*)
EXCEPTION
BEGIN (*)
DBMS_OUTPUT.PUT_LINE
Correct
6. Which of the following tools can NOT be used to develop
and test PL/SQL code? (1) Points
Oracle Jdeveloper
Oracle Application Express
Oracle JSQL (*)
Oracle iSQL*Plus
Incorrect. Refer to Section 1 Lesson 3.
7. SQL is a common access language for many types of datab
ases, including Oracle. True or False? (1) Points
True (*)
False
Correct
8. Which of the following statements about PL/SQL and SQL
is true? (1) Points
PL/SQL and SQL are both ANSI-compliant.
PL/SQL and SQL can be used with many types of databases, including Oracl
e.
PL/SQL and SQL are both Oracle proprietary programming languages.
PL/SQL allows basic program logic and control flow to be combined with S
QL statements. (*)
Correct
9. PL/SQL is an Oracle proprietary, procedural, 4GL progra
mming language. True or False? (1) Points
True
False (*)
Correct
10. Using Oracle Application Express, you can create Web ap
plications that include PL/SQL. True or False? (1) Points
True (*)
False
Incorrect. Refer to Section 1 Lesson 2.
11. Which of the following can you use PL/SQL to do? (1) Points
Update data (DML)
Develop Web applications using the Web Application Toolkit
Manage database security
Create customized reports
All of the above (*)
Correct
12. Comparing PL/SQL with other languages such as C and Jav
a, which of the following statements is true? (1) Points
PL/SQL is harder to learn
PL/SQL is easier to learn and more efficient (*)
PL/SQL is easier to learn but less efficient
PL/SQL is easier to learn and does not require an Oracle database or too
l
Incorrect. Refer to Section 1 Lesson 2.
Section 2
13. Which of the following will help to make code easier to
read? (1) Points
Naming variables.
Using %Type.
Including comments in the code. (*)
Correct
14. What good programming practice would make this code eas
ier to follow?
DECLARE
v_myvar VARCHAR2(20);
BEGIN
DECLARE
v_myvar VARCHAR2(15);
BEGIN
...
END;
END;
(1) Points
Using a consistent naming convention for variables
Labeling the blocks (*)
Avoid using column names as identifiers
Developing a case convention for the code
Incorrect. Refer to Section 2 Lesson 7.
15. Using standards for naming conventions is recommended.
True or False? (1) Points
True (*)
False
Correct
16. Which of the following declarations is invalid?
(1) Points
v_count PLS_INTEGER:=0;
college_name VARCHAR2(20):='Harvard';
v_pages CONSTANT NUMBER; (*)
v_start_date DATE := sysdate+1;
Correct
17. A variable must have a value if NOT NULL is specified.
True or False? (1) Points
True (*)
False
Incorrect. Refer to Section 2 Lesson 4.
18. You need to declare a variable to hold a value which ha
s been read from the SALARY column of the EMPLOYEES table. Which of the followin
g is an advantage of declaring the variable as: [Link]%TYPE ? (1) Poin
ts
It is shorter than coding NUMBER(8,2)
If the SALARY column is ALTERed later, the PL/SQL code need not be chang
ed. (*)
It executes much faster than using NUMBER(8,2)
It allows the software to perform implicit data type conversions.
Correct
19. ______ are meant to store large amounts of data.
(1) Points
Variables
Scalar data types
LOBs (*)
Correct
20. A collection is a composite data type. True or False?
(1) Points
True (*)
False
Correct
21. Which statement most closely describes
"data type"? (1) Points
It is the value of a variable.
It specifies a storage format, constraints, and a valid range of values
for a variable. (*)
It allows different kinds of data to be stored in a single variable.
It is used to test if errors have occurred.
Correct
22. Which statements about lexical units are true? (Choose
two.) (1) Points
(Choose all correct answers)
They are named objects stored in the database
They are the building blocks of every PL/SQL program (*)
They are optional but can make a PL/SQL block execute faster
They are sequences of characters including letters, digits, tabs, return
s and symbols (*)
Correct
23. Delimiters are _____ that have special meaning to the O
racle database. (1) Points
identifiers
variables
symbols (*)
Correct
24. Valid identifiers begin with a (1) Points
Number
Letter (*)
Special character
Correct
25. Evaluate the following declaration. Determine whether o
r not it is legal.
DECLARE
maxsalary NUMBER(7) = 5000;
(1) Points
Correct.
Not correct. (*)
Correct
26. Variables can be used in the following ways in a PL/SQL
block. (Choose two.) (1) Points
(Choose all correct answers)
To store data values. (*)
To rename tables and columns.
To refer to a single data value several times. (*)
To comment code.
Correct
27. Is the following variable declaration correct or not ?
DECLARE
display_qty CONSTANT NUMBER;
(1) Points
Correct.
Not correct. (*)
Correct
28. When a variable is defined using the CONSTANT keyword,
the value of the variable cannot change. True or False? (1) Points
True (*)
False
Correct
29. When nested blocks are used, which blocks can or must b
e labeled? (1) Points
The inner block must be labeled, the outer block can be labeled.
Both blocks must be labeled
Nested blocks cannot be labeled
The outer block must be labeled if it is to be referred to in the inner
block. (*)
Correct
30. Examine the following code. Line A causes an exception.
What will be displayed when the block is executed?
DECLARE
var_a NUMBER := 6;
var_b DATE;
BEGIN
var_a := var_a * 2;
var_b := '28 December 2006'; -- Line A
var_a := var_a * 2;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(var_a);
END;
(1) Points
12 (*)
24
6
Nothing will be displayed
Correct
31. What will be displayed when the following block is executed?
<<outer>>
DECLARE
v_myvar VARCHAR2(10) := 'Hello' ;
BEGIN
<<inner>> DECLARE
v_myvar VARCHAR2(10) := 'World';
BEGIN
v_myvar := v_myvar || ' ' || outer.v_myvar;
END;
DBMS_OUTPUT.PUT_LINE(inner.v_myvar);
END;
(1) Points
HelloWorld
Hello World
World
The code will fail since the inner variable is not within the scope of t
he outer block. (*)
Incorrect. Refer to Section 2 Lesson 6.
32. An exception occurs within the inner block of two neste
d blocks. The inner block does not have an EXCEPTION section. What always happen
s? (1) Points
Both blocks fail and an error message is displayed by the calling enviro
nment
The exception is propagated to the outer block (*)
Oracle automatically tries to re-execute the inner block
The user's database session is automatically disconnected
Correct
33. In the following code, Line A causes an exception. What
value will be displayed when the code is executed?
DECLARE
outer_var VARCHAR2(50) := 'My';
BEGIN
outer_var := outer_var || ' name';
DECLARE
inner_var NUMBER;
BEGIN
inner_var := 'Mehmet'; -- Line A
outer_var := outer_var || ' is';
END;
outer_var := outer_var || ' Zeynep';
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(outer_var);
END;
(1) Points
My
My name (*)
My name is
My name is Zeynep
Correct
34. Which of the following are disadvantages of implicit da
ta type conversions? (Choose two.) (1) Points
(Choose all correct answers)
The code is harder to read and understand (*)
You cannot store alphabetic characters in a variable of data type NUMBER
If Oracle changes the conversion rules in the future, your code may not
work any more (*)
Oracle cannot implicitly convert a number value to a character string
Correct
35. If today's date is 14th June 2007, which statement will
correctly convert today's date to the value: June 14, 2007 ? (1) Points
TO_CHAR(sysdate)
TO_DATE(sysdate)
TO_DATE(sysdate,'Month DD, YYYY')
TO_CHAR(sysdate, 'Month DD, YYYY') (*)
Incorrect. Refer to Section 2 Lesson 5.
36. Single row character functions are valid SQL functions
in PL/SQL. True or False? (1) Points
True (*)
False
Correct
37. Examine the following code:
1 DECLARE
2 x NUMBER;
3 BEGIN
4 x:= '300';
5 END;
After line 4, what is the value of x?
(1) Points
'300'
300 (*)
NULL
Incorrect. Refer to Section 2 Lesson 5.
38. TO_NUMBER, TO_CHAR, and TO_DATE are all examples of:
(1) Points
Implicit conversion functions
Explicit conversion functions (*)
Character functions
Operators
Correct
39. What is wrong with this assignment statement?
myvar := 'To be or not to be';
'That is the question';
(1) Points
An assignment statement must be a single line of code
Nothing is wrong, the statement is fine
An assignment statement must have a single semicolon at the end (*)
"myvar" is not a valid name for a variable
Character literals should not be enclosed in quotes
Incorrect. Refer to Section 2 Lesson 5.
40. When you use a function to convert data types in a PL/S
QL program, it is called ______ conversion. (1) Points
Explicit (*)
Implicit
TO_CHAR
Correct
41. Examine the following code. What is the final value of V_MYBOOL ?
DECLARE
v_mynumber NUMBER;
v_mybool BOOLEAN ;
BEGIN
v_mynumber := 6;
v_mybool := (v_mynumber BETWEEN 10 AND 20);
v_mybool := NOT (v_mybool);
END;
(1) Points
True (*)
False
Correct
Section 3
42. Which is the correct way to erase one row from a table?
(1) Points
REMOVE employee_id=100
FROM employees;
DROP TABLE employees
WHERE employee_id=100;
TRUNCATE employees
WHERE employee_id=100;
DELETE FROM employees
WHERE employee_id=100;
(*)
Correct
43. Assume there are 5 employees in Department 10. What hap
pens when the following statement is executed?
UPDATE employees
SET salary=salary*1.1;
(1) Points
All employees get a 10% salary increase. (*)
No rows are modified because you did not specify "WHERE department_id=10
"
A TOO_MANY_ROWS exception is raised.
An error message is displayed because you must use the INTO clause to ho
ld the new salary.
Correct
44. Which SQL statement can NOT use an implicit cursor?
(1) Points
A DELETE statement
An UPDATE statement
A SELECT statement that returns multiple rows (*)
A SELECT statement that returns one row
Incorrect. Refer to Section 3 Lesson 3.
45. The following anonymous block of code is run:
BEGIN
INSERT INTO countries (id, name)
VALUES ('XA', 'Xanadu');
SAVEPOINT XA;
INSERT INTO countries (id, name)
VALUES ('NV','Neverland');
COMMIT;
ROLLBACK TO XA;
END;
What happens when the block of code finishes?
(1) Points
No data is inserted and no errors occur.
No data is inserted and an error occurs
Two rows are inserted and no errors occur.
Two rows are inserted and an error occurs. (*)
Incorrect. Refer to Section 3 Lesson 4.
46. Which of the following best describes a database transa
ction? (1) Points
All the DML statements in a single PL/SQL block
A related set of SQL DML statements which must be executed either comple
tely or not at all (*)
A single SQL statement that updates multiple rows of a table
A SELECT statement based on a join of two or more database tables
Correct
47. Given this first section of code:
DECLARE
v_result [Link]%TYPE;
BEGIN
Which statement will always return exactly one value?
(1) Points
SELECT salary
INTO v_result
FROM employees;
SELECT salary
INTO v_result
FROM employees
WHERE last_name ='Smith';
SELECT salary
INTO v_result
FROM employees
WHERE department_id = 80;
SELECT SUM(salary)
INTO v_result
FROM employees;
(*)
Correct
48. Which of the following is NOT a good guideline for retr
ieving data in PL/SQL? (1) Points
Declare the receiving variables using %TYPE
The WHERE clause is optional in nearly all cases. (*)
Specify the same number of variables in the INTO clause as database colu
mns in the SELECT clause.
THE SELECT statement should fetch exactly one row.
Incorrect. Refer to Section 3 Lesson 2.
49. Which one of these SQL statements can be directly inclu
ded in a PL/SQL executable block? (1) Points
SELECT last_name FROM employees
WHERE employee_id=100;
DESCRIBE employees;
UPDATE employees
SET last_name='Smith';
(*)
DROP TABLE employees;
Incorrect. Refer to Section 3 Lesson 2.
50. The following code will return the last name of the emp
loyee whose employee id is equal to 100: True or False?
DECLARE
v_last_name employees.last_name%TYPE;
employee_id employees.employee_id%TYPE := 100;
BEGIN
SELECT last_name INTO v_last_name
FROM employees
WHERE employee_id = employee_id;
END;
(1) Points
True
False (*)
Incorrect. Refer to Section 3 Lesson 2.
1. Examine the following code:
DECLARE
v_salary NUMBER(6);
v_constant NUMBER(6) := 15000;
v_result VARCHAR(6) := 'MIDDLE';
BEGIN
IF v_salary != v_constant THEN
v_result := 'HIGH';
ELSE
v_result := 'LOW';
END IF;
END;
What is the final value of v_result?
(1) Points
HIGH
LOW (*)
MIDDLE
Null
Incorrect. Refer to Section 4 Lesson 1.
2. What is the correct name for CASE, LOOP, WHILE, and IF-
THEN-ELSE structures ? (1) Points
Control structures (*)
Array structures
Memory structures
Cursor structures
Correct
3. What is the correct form of a simple IF statement?
(1) Points
IF condition THEN statement;
IF condition THEN statement;
END IF; (*)
IF condition;
THEN statement;
END IF;
IF condition
THEN statement
ENDIF;
Correct
4. You can use a control structure to change the logical f
low of the execution of SQL statements. True or False? (1) Points
True
False (*)
Incorrect. Refer to Section 4 Lesson 1.
5. Examine the following code:
DECLARE
a VARCHAR2(6) := NULL;
b VARCHAR2(6) := NULL;
BEGIN
IF a = b THEN
DBMS_OUTPUT.PUT_LINE('EQUAL');
ELSIF a != b THEN
DBMS_OUTPUT.PUT_LINE('UNEQUAL');
ELSE
DBMS_OUTPUT.PUT_LINE('OTHER');
END IF;
END;
Which word will be displayed?
(1) Points
UNEQUAL
EQUAL
Nothing will be displayed
OTHER (*)
Correct
6. Examine the following code:
DECLARE
a BOOLEAN := TRUE;
b BOOLEAN := FALSE;
c BOOLEAN := TRUE;
d BOOLEAN := FALSE;
game char(4) := 'lost';
BEGIN
IF ((a AND b) AND (c OR d))
THEN game := 'won';
END IF;
What is the value of GAME at the end of this block?
(1) Points
NULL
'won'
'lost' (*)
False
Correct
7. You need to execute a set of statements 10 times, incre
asing a counter by 1 each time. Which of the following PL/SQL constructs can do
this? (Choose three) (1) Points
(Choose all correct answers)
IF ... THEN ... ELSE
A WHILE loop (*)
CASE ... WHEN ... THEN
A FOR loop (*)
A basic loop (*)
Correct
8. When coding two nested loops, both loops must be of the
same type. For example, you cannot code a FOR loop inside a WHILE loop. True or
False? (1) Points
True
False (*)
Correct
9. Examine the following code:
DECLARE
v_outer_count NUMBER := 1;
v_inner_count NUMBER := 1;
BEGIN
LOOP
LOOP
v_inner_count := v_inner_count + 1;
EXIT WHEN v_inner_count > 5; -- Line A
END LOOP;
v_outer_count := v_outer_count + 1;
EXIT WHEN v_outer_count > 3;
END LOOP;
END;
What happens at Line A when the value of V_INNER_COUNT equals 6?
(1) Points
Both loops are exited and the block's execution is terminated.
The inner loop is exited but the outer loop continues execution. (*)
The outer loop is exited but the inner loop continues execution.
An error condition is returned.
Correct
10. Examine the following code:
BEGIN
FOR i IN 1..5 LOOP
FOR j IN 1..8 LOOP
EXIT WHEN j = 7;
DBMS_OUTPUT.PUT_LINE(i || j);
END LOOP;
END LOOP;
END;
How many lines of output will be displayed when this code is executed?
(1) Points
35
30 (*)
40
Correct
11. You want to display multiplication tables for numbers up to 12. The dis
play should look like this:
1 x 1 = 1
1 x 2 = 2
.....
1 x 12 = 12
2 x 1 = 2
2 x 2 = 4
.....
2 x 12 = 24
3 x 1 = 3
.....
.....
12 x 12 = 144
Which of the following is an efficient way to do this in PL/SQL? (1) Poin
ts
Use two nested FOR loops. (*)
Store all the numbers from 1 to 144 in a table, then fetch and display t
hem using a cursor.
Create a function which accepts two numbers as IN parameters and returns
their product. Invoke the function 144 times.
Write an anonymous block which contains 144 calls to DBMS_OUTPUT, each l
ooking like: DBMS_OUTPUT.PUT_LINE('7 x 9 = 63');
Correct
12. Which kind of loop is this?
v_count := 1;
LOOP
v_count := v_count + 1;
EXIT WHEN i > 20;
END LOOP;
(1) Points
FOR loop
IF-THEN loop
Basic loop (*)
WHILE loop
CASE loop
Correct
13. Which one of these tasks is best done using a LOOP stat
ement? (1) Points
Assigning a letter grade to a numerical score
Calculating and displaying the sum of all integers from 1 to 100 (*)
Testing if a condition is true, false or null
Fetching and displaying an employee's last name from the database
Incorrect. Refer to Section 4 Lesson 3.
14. The EXIT statement can be located anywhere inside a bas
ic loop. True or False? (1) Points
True (*)
False
Correct
15. A PL/SQL block contains the following code:
v_counter := 1;
LOOP
EXIT WHEN v_counter = 5;
v_counter := v_counter + 1;
END LOOP;
What is the value of V_COUNTER after the loop is finished?
(1) Points
5 (*)
This is an infinite loop; the loop will never finish.
Correct
16. Which one of these is NOT a kind of loop? (1) Poin
ts
ASCENDING loop (*)
FOR loop
Basic loop
WHILE loop
Correct
17. In a FOR loop, an implicitly declared counter automatic
ally increases or decreases with each iteration. True or False? (1) Points
True (*)
False
Correct
18. Which of the following blocks produces the same output
as this block?
BEGIN
FOR i in 1 .. 3 LOOP
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
END;
(1) Points
DECLARE
i PLS_INTEGER := 0;
BEGIN
WHILE i<3 LOOP
DBMS_OUTPUT.PUT_LINE(i);
i := i + 1;
END LOOP;
END;
DECLARE
i PLS_INTEGER := 0;
BEGIN
WHILE i<3 LOOP
i := i + 1;
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
END;
(*)
DECLARE
i PLS_INTEGER := 0;
BEGIN
WHILE i<3 LOOP
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
i := i+ 1;
END;
Correct
19. What will happen when the following code is executed?
BEGIN
FOR i in 1 ..3 LOOP
DBMS_OUTPUT.PUT_LINE (i);
i := i + 1;
END LOOP;
END;
(1) Points
It will display 1, 2, 3.
It will display 2, 3, 4.
It will result in an error because you cannot modify the counter in a FO
R loop. (*)
It will result in an error because the counter was not explicitly declar
ed.
Correct
20. In a WHILE loop, the statements inside the loop must ex
ecute at least once. True or False? (1) Points
True
False (*)
Incorrect. Refer to Section 4 Lesson 4.
21. Which statement best describes when a F
OR loop should be used? (1) Points
When the number of iterations is known (*)
When testing the value in a Boolean variable
When the controlling condition must be evaluated at the start of each it
eration
Correct
22. You want to display a message which depends on the valu
e of v_grade: if v_grade = 'A' display 'Very Good', if v_grade = 'B' then displa
y 'Good', and so on.
DECLARE
v_grade CHAR(1);
BEGIN
CASE v_grade
The next line should be
(1) Points
WHEN 'A' THEN (*)
WHEN v_grade = 'A' THEN
WHEN 'A' THEN;
IF 'A' THEN
Correct
23. What will be the value of v_result after the following
code is executed?
DECLARE
v_grade CHAR(1) := NULL;
v_result VARCHAR2(10);
BEGIN
CASE v_grade
WHEN ('A' OR 'B') THEN v_result := 'Very Good';
WHEN ('E' OR 'F') THEN v_result := 'Poor';
ELSE v_result := 'In Between';
END CASE;
END;
(1) Points
Poor
In Between (*)
Null
Very Good
Correct
24. What value will v_answer contain after the following co
de is executed?
DECLARE
v_age NUMBER:= 18;
v_answer VARCHAR2(10);
BEGIN
v_answer :=
CASE
WHEN v_age < 25 THEN 'Young'
WHEN v_age = 18 THEN 'Exactly 18'
ELSE 'Older'
END CASE;
END;
(1) Points
Exactly 18
Young (*)
Null
Older
Correct
25. Which of the following is NOT a characteristic of a CAS
E statement? (1) Points
It ends with END CASE;
It can be a complete PL/SQL block
It returns a value (*)
It evaluates a condition and performs an action
Incorrect. Refer to Section 4 Lesson 2.
26. What will be the value of variable c after the followin
g code is executed?
DECLARE
a BOOLEAN := TRUE;
b BOOLEAN := NULL;
c NUMBER;
BEGIN
IF a AND b THEN c := 2;
ELSIF a OR b THEN c := 0;
ELSE c := 1;
END IF;
END;
(1) Points
Null
0 (*)
Incorrect. Refer to Section 4 Lesson 2.
Section 5
27. Examine the following code. To display the salary of an
employee, what must be coded at Point A?
DECLARE
CURSOR emp_curs IS SELECT * FROM employees;
BEGIN
FOR emp_rec IN emp_curs LOOP
DBMS_OUTPUT.PUT_LINE( -- what goes here ? );
END LOOP;
END;
(1) Points
salary
emp_curs.salary
emp_rec.salary (*)
[Link]
emp_rec.salary IN emp_curs
Correct
28. The following code fragment shows a cursor FOR loop:
FOR emp_record IN emp_cursor LOOP ......
Which of the following do NOT need to be coded explicitly? (Choose three.)
(1) Points
(Choose all correct answers)
OPEN emp_cursor; (*)
DECLARE CURSOR emp_cursor IS ...
emp_record emp_cursor%ROWTYPE; (*)
FETCH emp_cursor INTO emp_record; (*)
END LOOP;
Incorrect. Refer to Section 5 Lesson 3.
29. What is wrong with the following code?
DECLARE
CURSOR dept_curs IS SELECT * FROM departments;
BEGIN
FOR dept_rec IN dept_curs LOOP
DBMS_OUTPUT.PUT_LINE(dept_curs%ROWCOUNT || dept_rec.department_name):
END LOOP;
DBMS_OUTPUT.PUT_LINE(dept_rec.department_id);
END;
(1) Points
The cursor DEPT_CURS has not been opened.
The implicitly declared record DEPT_REC cannot be referenced outside the
cursor FOR loop. (*)
You cannot use %ROWCOUNT with a cursor FOR loop.
The cursor DEPT_CURS has not been closed.
Nothing is wrong, this code will execute successfully.
Correct
30. What will happen when the following code is executed?
DECLARE
CURSOR emp_curs IS
SELECT salary FROM employees;
v_salary [Link]%TYPE;
BEGIN
FETCH emp_curs INTO v_salary;
DBMS_OUTPUT.PUT_LINE(v_salary);
CLOSE emp_curs;
END;
(1) Points
The first employee's salary will be fetched and displayed.
All employees' salaries will be fetched and displayed.
The execution will fail and an error message will be displayed. (*)
The lowest salary value will be fetched and displayed.
Incorrect. Refer to Section 5 Lesson 1.
31. An explicit cursor must always be declared, opened and closed by the PL/
SQL programmer. True or False? (1) Points
True
False (*)
Correct
32. After a cursor has been closed, it can be opened again
in the same PL/SQL block. True or False? (1) Points
True (*)
False
Correct
33. What will happen when the following code is executed?
DECLARE CURSOR emp_curs IS
SELECT salary FROM employees;
v_salary [Link]%TYPE;
BEGIN
OPEN emp_curs;
FETCH emp_curs INTO v_salary;
CLOSE emp_curs;
FETCH emp_curs INTO v_salary;
END;
(1) Points
The block will fail and an INVALID_CURSOR exception will be raised. (*)
The first employee row will be fetched twice.
The first two employee rows will be fetched.
The block will fail and a TOO_MANY_ROWS exception will be raised.
Correct
34. The employees table contains 20 rows. What will happen w
hen the following code is executed?
DECLARE
CURSOR emp_curs IS
SELECT job_id FROM employees;
v_job_id employees.job_id%TYPE;
BEGIN
OPEN emp_curs;
LOOP
FETCH emp_curs INTO v_job_id;
DBMS_OUTPUT.PUT_LINE(v_job_id);
EXIT WHEN emp_curs%NOTFOUND;
END LOOP;
CLOSE emp_curs;
END;
(1) Points
20 job_ids will be displayed.
The block will fail and an error message will be displayed.
21 rows of output will be displayed; the first job_id will be displayed
twice.
21 rows of output will be displayed; the last job_id will be displayed t
wice. (*)
Correct
35. An implicit cursor can be used for a multiple-row SELEC
T statement. True or False? (1) Points
True
False (*)
Incorrect. Refer to Section 5 Lesson 1.
36. For which type of SQL statement must you use an explici
t cursor? (1) Points
DML statements that process more than one row.
Queries that return more than one row. (*)
Data Definition Language (DDL) statements.
Queries that return a single row.
Incorrect. Refer to Section 5 Lesson 1.
37. Examine the following code:
DECLARE
CURSOR emp_curs IS
SELECT last_name, salary
FROM employees
ORDER BY salary;
v_last_name employees.last_name%TYPE;
v_salary [Link]%TYPE;
BEGIN
...
Which of the following statements successfully opens the cursor and fetches the
first row of the active set?
(1) Points
OPEN emp_curs;
FETCH emp_curs INTO v_last_name, v_salary;
(*)
OPEN emp_curs;
FETCH emp_curs INTO v_salary, v_last_name;
OPEN emp_curs;
FETCH FIRST emp_curs INTO v_last_name, v_salary;
OPEN emp_curs;
FETCH emp_curs;
Correct
38. Which of these constructs can be used to fetch multiple
rows from a cursor's active set? (1) Points
A CASE statement
An IF .... ELSE statement
A basic loop which includes FETCH and EXIT WHEN statements (*)
A basic loop which includes OPEN, FETCH and CLOSE statements
Incorrect. Refer to Section 5 Lesson 1.
39. There are 12 distinct JOB_IDs in the EMPLOYEES table. Y
ou need to write some [Link] code to fetch and display all the employees with a
specific JOB_ID. The chosen JOB_ID can be different each time the code is execut
ed.
What is the best way to do this? (1) Points
Write 12 separate PL/SQL blocks, each declaring a cursor with a differen
t JOB_ID in the WHERE clause.
Write a single PL/SQL block which declares 12 cursors, one for each dist
inct value of JOB_ID.
Write a single PL/SQL block which declares one cursor using a parameter
for the JOB_ID. (*)
Write a single PL/SQL block which uses a cursor to fetch all the employe
e rows, with an IF statement to decide which of the fetched rows to display.
Correct
40. A cursor has been declared as:
CURSOR c_curs (p_param VARCHAR2) IS
SELECT * FROM mytable
WHERE mycolumn = p_param;
Which of the following will open the cursor successfully?
(1) Points
OPEN c_curs(p_param = ABC);
OPEN c_curs('ABC'); (*)
OPEN c_curs USING ("ABC");
p_param := 'ABC';
OPEN c_curs(p_param);
Incorrect. Refer to Section 5 Lesson 4.
41. Which of the following cursor attribute
s evaluates to TRUE if the cursor is open? (1) Points
%ISOPEN (*)
%NOTFOUND
%FOUND
%ROWCOUNT
Correct
42. Which of the following cursor attributes is set to the
total number of rows returned so far? (1) Points
%ISOPEN
%NOTFOUND
%FOUND
%ROWCOUNT (*)
Correct
43. Assume that you have declared a cursor called C_EMP. Wh
ich of the following statements about C_EMP is correct? (Choose two.) (1) Poin
ts
(Choose all correct answers)
You can use c_emp%NOTFOUND to exit a loop. (*)
You can fetch rows when c_emp%ISOPEN evaluates to FALSE.
You can use c_emp%ROWCOUNT to return the number of rows returned by the
cursor so far. (*)
You can use c_emp%FOUND after the cursor is closed.
Correct
44. Which of the following statements about the %ISOPEN cur
sor attribute is true? (1) Points
You can issue the %ISOPEN cursor attribute only when a cursor is open.
You can issue the %ISOPEN cursor attribute only when more than one recor
d is returned.
You can issue the %ISOPEN cursor attribute when a cursor is open or clos
ed. (*)
If a cursor is open, then the value of %ISOPEN is false.
Correct
45. User TOM has locked a row in the WORKERS table. Now, use
r DICK wants to open the following cursor:
CURSOR c IS
SELECT * FROM workers FOR UPDATE NOWAIT;
What will happen when DICK opens the cursor and tries to fetch rows?
(1) Points
TOM's session is rolled back. DICK's session successfully fetches rows f
rom the cursor.
DICK's session waits indefinitely.
Both sessions wait for a few seconds; then the system breaks all locks a
nd both sessions raise an exception.
DICK's session immediately raises an exception. (*)
The c%NOWAIT attribute is set to TRUE.
Correct
46. A cursor is declared as:
CURSOR c IS SELECT * FROM departments FOR UPDATE;
After opening the cursor and fetching some rows, you want to delete the most rec
ently fetched row. Which of the following will do this successfully?
(1) Points
DELETE FROM c WHERE CURRENT OF c;
DELETE FROM departments WHERE CURRENT OF c; (*)
DELETE FROM c WHERE CURRENT OF departments;
DELETE FROM departments WHERE c%ROWCOUNT = 1;
None of the above.
Correct
47. Examine the following code:
DECLARE
CURSOR c IS SELECT * FROM employees FOR UPDATE;
c_rec c%ROWTYPE;
BEGIN
OPEN c;
FOR i IN 1..20 LOOP
FETCH c INTO c_rec;
IF i = 6 THEN
UPDATE employees SET first_name = 'Joe'
WHERE CURRENT OF c;
END IF;
END LOOP;
CLOSE c;
END;
Which employee row or rows will be updated when this block is executed?
(1) Points
The first 6 fetched rows will be updated.
No rows will be updated because you locked the rows when the cursor was
opened.
The 6th fetched row will be updated. (*)
The block will not compile because the cursor should have been declared
.... FOR UPDATE WAIT 5;
None of the above.
Correct
Section 5 Continued
48. You want to display each row from the DEPARTMENTS table
, and immediately underneath it, a list of all EMPLOYEES in that department. Whi
ch of the following is a good way to do this? (1) Points
Use a single cursor, declared as SELECT * FROM employees GROUP BY depart
ment_id;
Use two cursors, one for each of the two tables. Declare the EMPLOYEES c
ursor with a parameter for the DEPARTMENT_ID. (*)
Write a SELECT statement which JOINs the two tables, and use CONNECT BY
PRIOR and LEVEL to display the rows in the correct order.
Use a single cursor with a cursor FOR loop.
Change the physical model so that all employee and department data is in
a single table.
Correct
49. When using multiple nested cursors, what kinds of loops
can you use? (1) Points
Cursor FOR loops only.
Basic loops only.
WHILE loops only.
None of the above.
All of the above. (*)
Incorrect. Refer to Section 5 Lesson 6.
50. You want to display all locations, and the departments i
n each location. Examine the following code:
DECLARE
CURSOR loc_curs IS SELECT * FROM locations;
CURSOR dept_curs(p_loc_id NUMBER) IS
SELECT * FROM departments WHERE location_id = p_loc_id;
BEGIN
FOR loc_rec IN loc_curs LOOP
DBMS_OUTPUT.PUT_LINE(loc_rec.city);
FOR dept_rec IN dept_curs(-- Point A --) LOOP
DBMS_OUTPUT.PUT_LINE(dept_rec.department_name);
END LOOP;
END LOOP;
END;
What should you code at Point A?
(1) Points
p_loc_id
location_id
null
LOOP ... END LOOP;
loc_rec.location_id (*)
Incorrect. Refer to Section 5 Lesson 6.