You are on page 1of 172

Section 9 1.

Every subprogram which has been declared in a package


specification must also be included in the package body. Triue or False? Mark for
Review
(1) Points
True (*)

False

Correct
2. Which one of the following can NOT be part of a Package ? Mark for
Review
(1) Points
Procedures

Explicit cursors

Triggers (*)

Functions

Global variables

Correct
3. Which part of a package must be created first, the specification or the body?
Mark for Review
(1) Points
The body

The specification (*)

The specification and body must be created at the same time. It

does not matter which is created first.

The body can be created first, but only if the package has no specification.

Correct
4. Package MYPACK contains procedure MYPROC. You can see which
parameters MYPROC uses by executing: DESCRIBE mypack.myproc. True or False?
Mark for Review
(1) Points
True

False (*)

Correct
5. Examine the following code:

CREATE OR REPLACE PACKAGE emppack IS


PROCEDURE upd_emp (p_empno IN NUMBER, p_salary IN NUMBER);
END emppack;
CREATE OR REPLACE PACKAGE BODY emppack IS
-- Line A
PROCEDURE upd_emp (p_empno IN NUMBER, p_salary IN NUMBER) IS
BEGIN
IF NOT sal_ok(p_salary) THEN
RAISE_APPLICATION_ERROR(-20201,'Invalid salary');
END IF;
END upd_emp;
FUNCTION sal_ok(pf_salary NUMBER) RETURN BOOLEAN IS
BEGIN
IF pf_salary > 50000 THEN RETURN FALSE;
ELSE RETURN TRUE;
END IF;
END sal_ok;
END emppack;

What must be coded at Line A for this package to compile successfully?

Mark for Review


(1) Points
FUNCTION sal_ok;

FUNCTION sal_ok(pf_salary NUMBER);

FUNCTION sal_ok(pf_salary NUMBER) RETURN BOOLEAN; (*)

PROCEDURE upd_emp (p_empno IN NUMBER, p_salary IN NUMBER);

Nothing is needed at Line A

Correct
6. Which two of these declarations cannot be in the same package specification?

1. PROCEDURE myproc (p1 NUMBER, p2 VARCHAR2);


2. PROCEDURE myproc (p1 VARCHAR2, p2 NUMBER);
3. PROCEDURE myproc (p1 NUMBER, p2 CHAR);
4. PROCEDURE myproc (p1 NUMBER);

Mark for Review


(1) Points
1 and 2

1 and 3 (*)

2 and 3

3 and 4

1 and 4

Correct
7. We never need to use a forward declaration when invoking a public
subprogram. True or False? Mark for Review
(1) Points
True (*)

False

Correct
8. Examine the following package code:

CREATE OR REPLACE PACKAGE ol_pack IS


PROCEDURE subprog (p1 IN VARCHAR2, p2 IN NUMBER);
PROCEDURE subprog (param1 IN CHAR, param2 IN NUMBER);
FUNCTION subprog (param1 IN VARCHAR2, param2 IN NUMBER) RETURN
DATE;
END ol_pack;

Which of the following calls will be successful? (Choose two.)

Mark for Review


(1) Points (Choose all correct answers)
ol_pack.subprog('Jane',30);

ol_pack.subprog(param1=>'Jane',param2=>30); (*)
v_number := ol_pack.subprog(p1=>'Jane');

v_date := ol_pack.subprog('Jane',30); (*)

Incorrect. Refer to Section 9.


9. Which of the following SQL statements can be included in a PL/SQL block
only by using Dynamic SQL? (Choose two.) Mark for Review
(1) Points (Choose all correct answers)
DELETE

SAVEPOINT

ALTER (*)

SELECT ..... FOR UPDATE NOWAIT

GRANT (*)

Correct
10. You want to create a function which drops a table. You write the following
code:

CREATE OR REPLACE FUNCTION droptab


(p_tab_name IN VARCHAR2)
RETURN BOOLEAN IS
BEGIN
DROP TABLE p_tab_name;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN RETURN FALSE;
END;

Why will this procedure not compile successfully?

Mark for Review


(1) Points
Because you can never drop a table from inside a function

Because the PL/SQL compiler cannot check if the argument of p_tab_name is a valid
table-name (*)

Because you do not have the privilege needed to drop a table


Because you cannot use RETURN in the exception section

Correct
Section 9 11. A SQL statement can pass through several stages. Which of the
following is NOT one of these stages? Mark for Review
(1) Points
BIND

FETCH

PARSE

RETURN (*)

EXECUTE

Correct
12. Examine the following code:

CREATE OR REPLACE PROCEDURE myproc IS


CURSOR c_curs IS SELECT view_name FROM user_views;
BEGIN
FOR v_curs_rec IN c_curs LOOP
EXECUTE IMMEDIATE 'DROP VIEW ' || v_curs_rec.view_name;
END LOOP;
END;

What will happen when this procedure is invoked?

Mark for Review


(1) Points
All views in the user's schema will be dropped. (*)

The procedure will not compile successfully because the syntax of EXECUTE
IMMEDIATE is incorrect.

The procedure will raise an exception because Dynamic SQL can drop tables but
cannot drop views.

The procedure will raise an exception because one of the views is a complex view.

Correct
13. We need to declare a package variable named MYVAR, which can be
referenced by any subprogram in the package but can NOT be referenced from outside the
package. In the following code, where should MYVAR be declared?

CREATE OR REPLACE PACKAGE varpack IS


-- Point A

END varpack;
CREATE OR REPLACE PACKAGE BODY varpack IS
-- Point B
PROCEDURE varproc IS
-- Point C
BEGIN

END varproc;
PROCEDURE ...

-- Point D
END varpack;

Mark for Review


(1) Points
Point A

Point B (*)

Point C

Point D

Point B or Point C, they will both work

Correct
14. Examine the following package specification:

CREATE OR REPLACE PACKAGE taxpack IS


CURSOR empcurs IS SELECT * FROM employees;
PROCEDURE taxproc;
END mypack;

The package body of TAXPACK also includes a function called TAXFUNC. Which one of
the following statements is NOT true?
Mark for Review
(1) Points
The procedure can be invoked by:

BEGIN
taxpack.taxproc;
END;

The packaage will not compile because you cannot declare a cursor in the
specification.

(*)

TAXPROC is a public procedure and TAXFUNC is a private function

TAXPROC can invoke TAXFUNC if TAXPROC is coded before TAXFUNC

TAXPROC can open the cursor

Correct
15. A package contains both public and private subprograms. Which one of the
following statements is true? Mark for Review
(1) Points
Each subprogram is loaded into memory when it is first invoked.

The public subprograms are all loaded into memory at the same time, but the private
subprograms are loaded into memory one at a time as they are invoked.

The whole package is loaded into memory when the first call is made to any
subprogram in the package. (*)

If three users invoke three different subprograms in the package, there will be three
copies of the code in memory.

Correct
16. In a package, public components are declared in the specification but private
components are not. True or False? Mark for Review
(1) Points
True (*)

False

Correct
17. Your schema contains four packages, each having a specification and a
body. You have also been granted privileges to access three packages (and their bodies) in
other users' schemas. What will be displayed by the following query?

SELECT COUNT(*) FROM ALL_OBJECTS


WHERE object_type LIKE 'PACK%'
AND owner <> USER;

Mark for Review


(1) Points
14

6 (*)

Correct
18. Package OLDPACK is in your schema. What will happen when the
following statement is executed?

DROP PACKAGE oldpack;

Mark for Review


(1) Points
The body will be dropped but the specification will be retained.

The specification will be dropped but the body will be retained. Both

the specification and the body will be dropped. (*)

The statement will fail because you must drop the body before you can drop the
specification.

Correct
19. When a change is made to the detailed code of a public procedure in a
package (but not to the procedure's name or parameters), both the specification and the
body must be recompiled. True or False? Mark for Review
(1) Points
True

False (*)

Incorrect. Refer to Section 9.


20. The DBMS_OUTPUT.PUT procedure places text in a buffer but does not
display the contents of the buffer. True or False? Mark for Review
(1) Points
True (*)

False

Correct
Section 9 21. The UTL_FILE package can be used to create binary files such as
JPEGs as well as text files. True or False? Mark for Review
(1) Points
True

False (*)

Correct
22. Which of the following exceptions can be raised ONLY when using the
UTL_FILE package? (Choose two) Mark for Review
(1) Points (Choose all correct answers)
INVALID_PATH (*)

NO_DATA_FOUND

VALUE_ERROR

READ_ERROR (*)

E_MYEXCEP

Correct
23. What will be displayed when the following code is executed?

BEGIN
DBMS_OUTPUT.PUT('I do like');
DBMS_OUTPUT.PUT_LINE('to be');
DBMS_OUTPUT.PUT('beside the seaside');
END;
Mark for Review
(1) Points
I do like to be
beside the seaside

I do like
to be
beside the seaside

I do like to be

I do liketo be

(*)

I do like to be beside the seaside

Incorrect. Refer to Section 9.


24. When a user session changes the value of a package variable, the new value
can immediately be seen by other sessions. True or False? Mark for Review
(1) Points
True

False (*)

Correct
25. Package MULTIPACK declares the following global variable:
g_myvar NUMBER;

User DICK executes the following:


multipack.g_myvar := 45;

User HAZEL now connects to the database. Both users immediately execute:

BEGIN
DBMS_OUTPUT.PUT_LINE(multipack.g_myvar);
END;

What values will Dick and Hazel see?

Mark for Review


(1) Points
Dick: 45, Hazel: 45
Dick: 45, Hazel: 0

Dick: 45, Hazel: null (*)

Dick: 0, Hazel: 0

Both queries will fail because the syntax of DBMS_OUTPUT.PUT_LINE is


incorrect

Incorrect. Refer to Section 9.


Section 10 26. Examine the following trigger. It should raise an
application error if a user tries to update an employee's last name. It should allow updates to
all other columns of the EMPLOYEES table. What should be coded at line A?

CREATE TRIGGER stop_ln_trigg


BEFORE UPDATE ON employees
BEGIN
-- Line A
RAISE_APPLICATION_ERROR(-20201,'Updating last name not allowed');
END IF;
END;

Mark for Review


(1) Points
IF UPDATING LAST_NAME THEN

IF UPDATING('LAST_NAME') THEN (*) IF

UPDATE('LAST_NAME') THEN

IF UPDATING THEN

Correct
27. Examine the following code. To create a row trigger, what code should be
included at Line A?

CREATE TRIGGER dept_trigg


AFTER UPDATE OR DELETE ON departments
-- Line A
BEGIN ...
Mark for Review
(1) Points
AFTER EACH ROW

FOR EVERY ROW

FOR EACH ROW (*)

ON EACH ROW

ON EVERY ROW

Correct
28. Which of the following can NOT be coded in the body of a DML trigger?
(Choose two.) Mark for Review
(1) Points (Choose all correct answers)
IF DELETING THEN

IF SELECTING THEN (*)

IF INSERTING THEN

IF UPDATING ('JOB_ID') THEN

IF OTHERS THEN (*)

Correct
29. In the following code:

CREATE TRIGGER mytrigg


INSTEAD OF INSERT OR UPDATE ON my_object_name
FOR EACH ROW
BEGIN ...
my_object_name can be the name of a table. True or False?

Mark for Review


(1) Points
True

False (*)
Correct
30. User AYSEGUL successfully creates the following trigger:

CREATE TRIGGER loc_trigg


BEFORE UPDATE ON aysegul.locations
BEGIN ...

AYSEGUL now tries to drop the LOCATIONS table. What happens?

Mark for Review


(1) Points
An error message is displayed because you cannot drop a table that is associated with a
trigger.

The table is dropped and the trigger is disabled.

The trigger is dropped but the table is not dropped.

Both the table and the trigger are dropped. (*) None

of the above.

Correct
Section 10 31. MARY and JOE's schemas each contain an EMPLOYEES table.
JOE creates the following trigger:

CREATE TRIGGER upd_trigg


AFTER DELETE ON joe.employees
FOR EACH ROW
BEGIN
DELETE FROM mary.employees
WHERE employee_id = :OLD.employee_id;
END;

A third user TOM needs to delete rows from JOE's EMPLOYEES table. What object
privileges will TOM and JOE need?

Mark for Review


(1) Points
TOM does not need any object privileges, but JOE needs DELETE on both
TOM.EMPLOYEES and MARY.EMPLOYEES

TOM needs DELETE on JOE.EMPLOYEES and JOE needs DELETE on


MARY.EMPLOYEES (*)
JOE does not need any object privileges, but TOM needs DELETE on
MARY.EMPLOYEES

TOM needs DELETE on MARY.EMPLOYEES and JOE needs EXECUTE on


TOM.UPD_TRIGG

Correct
32. Which of the following will remove a trigger in your schema named
EMP_TRIGG from the database? Mark for Review
(1) Points
DROP emp_trigg TRIGGER;

ALTER TRIGGER emp_trigg DISABLE;

DROP TRIGGER emp_trigg; (*)

REMOVE TRIGGER emp_trigg;

None of the above

Correct
33. Examine the following code:

CREATE TRIGGER emp_trigg


AFTER UPDATE OF salary ON employees
FOR EACH ROW
DECLARE
v_count NUMBER;
BEGIN
-- Line A
END;

Which of the following statements is NOT allowed at Line A?

Mark for Review


(1) Points
SELECT count(*) INTO v_count FROM departments;

UPDATE employees SET job_id = 'IT_PROG' WHERE employee_id =


:OLD.employee_id;

SELECT count(*) INTO v_count FROM employees; (*)


DBMS_OUTPUT.PUT_LINE('A salary was updated');

None. All of the above are allowed.

Correct
34. Which of the following statements could cause a DDL trigger to fire?
Mark for Review
(1) Points
DROP TABLE employees;

ALTER TABLE departments ADD (budget NUMBER(8,2));

CREATE TABLE newemp AS SELECT * FROM employees;

TRUNCATE TABLE locations;

All of the above (*)

Correct
35. You want to prevent any objects in your schema from being altered or
dropped. You decide to create the following trigger:

CREATE TRIGGER stop_ad_trigg


-- Line A
BEGIN
RAISE_APPLICATION_ERROR(-20203,'Invalid Operation');
END;

What should you code at Line A ?

Mark for Review


(1) Points
AFTER ALTER OR DROP ON SCHEMA

INSTEAD OF ALTER OR DROP ON SCHEMA

BEFORE ALTER OR DROP ON SCHEMA (*)

BEFORE ALTER, DROP ON SCHEMA

AFTER ALTER, DROP ON SCHEMA


Incorrect. Refer to Section 10.
36. What is wrong with the following code?

CREATE TRIGGER call_trigg


AFTER LOGOFF ON SCHEMA
BEGIN
CALL drop_proc;
END;

Mark for Review


(1) Points
You cannot code an AFTER LOGOFF trigger

When using CALL, you must not code BEGIN

When using CALL, you must not code END;

The CALL statement must not end with a semicolon (;)

All of the above (*)

Correct
37. Examine this code:

CREATE TRIGGER new_trigg


AFTER CREATE ON reserved_word
BEGIN ...

Which of the following can be used in place of reserved_word? (Choose two.)

Mark for Review


(1) Points (Choose all correct answers)
TABLE

SCHEMA (*)

USER

DATABASE (*)

TABLE employees
Correct
38. A trigger automatically inserts a row into a logging table every time a user's
session receives this error message:
ORA-00942: table or view does not exist
What kind of trigger is this? Mark for Review
(1) Points
A row trigger

A statement trigger

A database event trigger (*)

A DDL trigger

An AFTER trigger

Correct
39. The database administrator wants to write a log record every time an Oracle
Server error occurs in any user's session. The DBA creates the following trigger:

CREATE TRIGGER log_errs_trigg


-- Line A
BEGIN
INSERT INTO errlog_table VALUES (...);
END;
What should the DBA code at Line A ?

Mark for Review


(1) Points
AFTER ERROR ON DATABASE

AFTER SERVER ERROR ON DATABASE

AFTER SERVERERROR ON SCHEMA

AFTER SERVERERROR ON DATABASE (*)

AFTER ORACLE ERROR ON SCHEMA

Correct
40. Examine the following code:
CREATE TRIGGER emp_trigg
-- Line A
BEGIN
INSERT INTO log_table VALUES (USER, SYSDATE);
END;

Which of the following can NOT be coded at Line A?

Mark for Review


(1) Points
BEFORE UPDATE ON employees

AFTER INSERT OR DELETE ON employees

AFTER SELECT ON employees (*)

BEFORE DELETE ON employees

AFTER UPDATE OF last_name ON employees

Correct
Section 10 41. What is wrong with the following code?

CREATE OR REPLACE TRIGGER emp_dept_trigg


BEFORE UPDATE OR DELETE ON employees, departments
BEGIN

Mark for Review


(1) Points
One trigger can be associated with only one table

(*)

The second line should be:


BEFORE (UPDATE,DELETE) ON employees, departments

DML triggers must be row triggers, so FOR EACH ROW is missing

The second line should be:


BEFORE UPDATE OR DELETE ON employees OR departments

Correct
42. You need to create a trigger that will fire whenever an employee's salary or
job_id is updated, but not when any other column of the EMPLOYEES table is updated.
Which of the following is the correct syntax to do this? Mark for Review
(1) Points
CREATE TRIGGER emp_upd_trigg
AFTER UPDATE ON employees (salary, job_id)
BEGIN ...

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE OF salary, job_id ON employees
BEGIN ...

(*)

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE OF (salary, job_id) ON employees
BEGIN ...

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE OF salary OR job_id ON employees
BEGIN ...

Correct
43. The following code will successfully create emp_trigg: True or False?

CREATE OR REPLACE TRIGGER emp_trigg


BEFORE DELETE OF salary ON employees
BEGIN
RAISE_APPLICATION_ERROR(-20202,'Deleting salary is not allowed');
END;

Mark for Review


(1) Points
True

False (*)

Correct
44. Which of the following are good guidelines to follow when creating a
database trigger? (Choose two.) Mark for Review
(1) Points (Choose all correct answers)
Where possible, use a trigger to enforce a foreign key constraint.

Use triggers to override privilege checking and view other users' private tables.
Do not use a trigger to replace or duplicate something which the Oracle Server does
automatically. (*)

Use triggers to prevent unauthorized users from SELECTing confidential data.

Do not create a trigger that automatically fires another trigger. (*)

Correct
45. You can code COMMIT and ROLLBACK statements in a trigger body.
True or False? Mark for Review
(1) Points
True

False (*)

Correct
46. A trigger can be created in the database or within an application. True or
False? Mark for Review
(1) Points
True (*)

False

Correct
47. What type of database object would you create to write an auditing record
automatically every time a user connects to the database? Mark for Review
(1) Points
A procedure

A complex view

A trigger (*)

A function

A package

Correct
48. Which of the following best describes a database trigger? Mark for
Review
(1) Points
A subprogram that checks whether a user has typed the correct password to log on to
the database.

A PL/SQL subprogram that executes automatically whenever an associated database


event occurs. (*)

A PL/SQL subprogram that always returns exactly one value.

A subprogram that is invoked explicitly by the calling application.

A PL/SQL subprogram that inserts rows into a logging table.

Correct
49. A trigger can be a public subprogram within a PL/SQL package. True or
False? Mark for Review
(1) Points
True

False (*)

Correct
50. A business rule states that an employee's salary cannot be greater than
99,999.99 or less than 0. The best way to enforce this rule is by using: Mark for
Review
(1) Points
A datatype of NUMBER(7,2) for the SALARY column

A database trigger

A check constraint (*)

An application trigger

A view

Correct
Mid Term Exam Semester 2

1. Examine the following code:

CREATE TRIGGER emp_trigg


AFTER UPDATE OF salary ON employees
FOR EACH ROW
DECLARE
v_count NUMBER;
BEGIN
-- Line A
END;

Which of the following statements is NOT allowed at Line A? Mark for


Review
(1) Points

SELECT count(*) INTO v_count FROM


departments;

UPDATE employees SET job_id = 'IT_PROG' WHERE


employee_id = :OLD.employee_id;

SELECT count(*) INTO v_count FROM employees;


(*)

DBMS_OUTPUT.PUT_LINE('A salary was updated');

None. All of the above are allowed.

Correct

2. Which of the following statements could cause a DDL


trigger to fire? Mark for Review
(1) Points

DROP TABLE employees;

ALTER TABLE departments ADD (budget


NUMBER(8,2));

CREATE TABLE newemp AS SELECT * FROM


employees;

TRUNCATE TABLE locations;

All of the above (*)

Correct

3. The database administrator wants to write a log record


every time an Oracle Server error occurs in any user's session. The DBA
creates the following trigger:
CREATE TRIGGER log_errs_trigg
-- Line A
BEGIN
INSERT INTO errlog_table VALUES (...);
END;
What should the DBA code at Line A ? Mark for Review
(1) Points

AFTER ERROR ON DATABASE

AFTER SERVER ERROR ON DATABASE

AFTER SERVERERROR ON SCHEMA

AFTER SERVERERROR ON DATABASE (*)

AFTER ORACLE ERROR ON SCHEMA

Correct

4. You want to prevent any objects in your schema from


being altered or dropped. You decide to create the following trigger:

CREATE TRIGGER stop_ad_trigg


-- Line A
BEGIN
RAISE_APPLICATION_ERROR(-20203,'Invalid Operation');
END;

What should you code at Line A ? Mark for Review


(1) Points

AFTER ALTER OR DROP ON SCHEMA

INSTEAD OF ALTER OR DROP ON SCHEMA

BEFORE ALTER OR DROP ON SCHEMA (*)

BEFORE ALTER, DROP ON SCHEMA

AFTER ALTER, DROP ON SCHEMA

Incorrect. Refer to Section 10.

5. Which kinds of trigger can cause a mutating table


problem? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

BEFORE UPDATE row triggers (*)

DDL triggers
AFTER DELETE row triggers (*)

Database Event triggers

INSTEAD OF triggers

Incorrect. Refer to Section 10.6.


Examine this code:

CREATE TRIGGER new_trigg


AFTER CREATE ON reserved_word
BEGIN ...

Which of the following can be used in place of reserved_word? (Choose


two.) Mark for Review
(1) Points

(Choose all correct answers)

TABLE

SCHEMA (*)

USER

DATABASE (*)

TABLE employees

Correct

7. Examine this code:

CREATE TRIGGER de_trigg


-- Line A
BEGIN ...

Which of the following are NOT valid at Line A ? (Choose two.) Mark
for Review
(1) Points

(Choose all correct answers)

AFTER LOGOFF ON SCHEMA (*)

AFTER LOGON ON SCHEMA

BEFORE LOGOFF ON SCHEMA

BEFORE DISCONNECT ON SCHEMA (*)

AFTER SERVERERROR ON SCHEMA

Correct
8. You need to disable all triggers that are associated
with DML statements on the DEPARTMENTS table. Which of the following
commands should you use? Mark for Review
(1) Points

ALTER TABLE departments DISABLE ALL TRIGGERS;


(*)

ALTER TRIGGER DISABLE ALL ON departments;

ALTER TABLE departments DISABLE TRIGGERS;

DISABLE ALL TRIGGERS ON departments;

ALTER TABLE departments DROP ALL TRIGGERS;

Correct

9. After the following SQL statement is executed, all the


triggers on the DEPARTMENTS table will no longer fire, but will remain in
the database. True or False?

ALTER TABLE departments DISABLE ALL TRIGGERS; Mark for Review


(1) Points

True (*)

False

Incorrect. Refer to Section 10.

10. User AYSEGUL successfully creates the following trigger:

CREATE TRIGGER loc_trigg


BEFORE UPDATE ON aysegul.locations
BEGIN ...

AYSEGUL now tries to drop the LOCATIONS table. What happens? Mark for
Review
(1) Points

An error message is displayed because you


cannot drop a table that is associated with a trigger.

The table is dropped and the trigger is


disabled.

The trigger is dropped but the table is not


dropped.

Both the table and the trigger are dropped.


(*)
None of the above.

Correct11. A SQL statement can


pass through several stages. Which of the following is NOT one of these
stages? Mark for Review
(1) Points

BIND

FETCH

PARSE

RETURN (*)

EXECUTE

Correct

12. Examine the following code:

CREATE OR REPLACE PROCEDURE myproc IS


CURSOR c_curs IS SELECT view_name FROM user_views;
BEGIN
FOR v_curs_rec IN c_curs LOOP
EXECUTE IMMEDIATE 'DROP VIEW ' || v_curs_rec.view_name;
END LOOP;
END;

What will happen when this procedure is invoked? Mark for Review
(1) Points

All views in the user's schema will be


dropped. (*)

The procedure will not compile successfully


because the syntax of EXECUTE IMMEDIATE is incorrect.

The procedure will raise an exception because


Dynamic SQL can drop tables but cannot drop views.

The procedure will raise an exception because


one of the views is a complex view.

Incorrect. Refer to Section 9.

13. Which of the following SQL statements can be included in


a PL/SQL block only by using Dynamic SQL? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)


DELETE

SAVEPOINT

ALTER (*)

SELECT ..... FOR UPDATE NOWAIT

GRANT (*)

Correct

14. MARY wants HENRY to be able to query her EMPLOYEES


table. Mary executes the following code:

DECLARE
v_grant_stmt VARCHAR2(50);
BEGIN
v_grant_stmt := 'GRANT SELECT ON employees TO henry';
DBMS_SQL.EXECUTE(v_grant_stmt);
END;

Mary has successfully granted the privilege to Henry. True or False?


Mark for Review
(1) Points

True

False (*)

Incorrect. Refer to Section 9.

15. Package MULTIPACK declares the following global


variable:
g_myvar NUMBER;

User DICK executes the following:


multipack.g_myvar := 45;

User HAZEL now connects to the database. Both users immediately execute:

BEGIN
DBMS_OUTPUT.PUT_LINE(multipack.g_myvar);
END;

What values will Dick and Hazel see? Mark for Review
(1) Points

Dick: 45, Hazel: 45

Dick: 45, Hazel: 0

Dick: 45, Hazel: null (*)


Dick: 0, Hazel: 0

Both queries will fail because the syntax of


DBMS_OUTPUT.PUT_LINE is incorrect

Correct16. Package CURSPACK


declares a global cursor in the package specification. The package
contains three public procedures: OPENPROC opens the cursor; FETCHPROC
fetches 5 rows from the cursor's active set; CLOSEPROC closes the cursor.

What will happen when a user session executes the following commands in
the order shown?
curspack.openproc; -- line 1
curspack.fetchproc; -- line 2
curspack.fetchproc; -- line 3
curspack.openproc; -- line 4
curspack.fetchproc; -- line 5
curspack.closeproc; -- line 6 Mark for Review
(1) Points

The first 15 rows will be fetched.

The first 10 rows will be fetched, then the


first 5 rows will be fetched again.

The first 5 rows will be fetched three times.

An error will occur at line 2.

An error will occur at line 4. (*)

Correct

17. Which of the following statements about a package


initialization block is true? Mark for Review
(1) Points

It cannot contain any SQL statements.

It is an anonymous block at the end of a


package body. (*)

It is a procedure in a package that must be


invoked before the rest of the package can be used.

It is an anonymous block in the package


specification.

It is executed automatically every time any


global variable in the package is referenced.

Correct
18. A public function in a package is invoked from within a
SQL statement. The function's code can include a COMMIT statement. True or
False? Mark for Review
(1) Points

True

False (*)

Correct

19. Package TAXPACK declares a global variable G_TAXRATE


NUMBER(2,2). The value of the tax rate is stored in table TAXTAB in the
database. You want to read this value automatically into G_TAXRATE each
time a user session makes its first call to TAXPACK. How would you do
this? Mark for Review
(1) Points

Declare the global variable as:


g_taxrate NUMBER(2,2) := SELECT tax_rate FROM taxtab;

Create a database trigger that includes the


following code:
SELECT tax_rate INTO taxpack.g_taxrate FROM taxtab;

Add a private function to the package body of


TAXPACK, and invoke the function from the user session.

Add a package initialization block to the


package body of TAXPACK.

(*)

Correct

20. Which two of these declarations cannot be in the same


package specification?

PROCEDURE myproc (p1 NUMBER, p2 VARCHAR2);


PROCEDURE myproc (p1 VARCHAR2, p2 NUMBER);
PROCEDURE myproc (p1 NUMBER, p2 CHAR);
PROCEDURE myproc (p1 NUMBER); Mark for Review
(1) Points

1 and 2

1 and 3 (*)

2 and 3

3 and 4
1 and 4

Correct21. Which of the following


are NOT stored inside the database? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

A PL/SQL package specification A

database trigger

An anonymous block (*)

An application trigger (*)

A sequence

Incorrect. Refer to Section 10.

22. You can use a trigger to prevent rows from being deleted
from the EMPLOYEES table on Mondays. True or False? Mark for Review
(1) Points

True (*)

False

Correct

23. What type of database object would you create to write


an auditing record automatically every time a user connects to the
database? Mark for Review
(1) Points

A procedure

A complex view

A trigger (*)

A function

A package

Correct

24. A business rule states that an employee's salary cannot


be greater than 99,999.99 or less than 0. The best way to enforce this
rule is by using: Mark for Review
(1) Points

A datatype of NUMBER(7,2) for the SALARY


column

A database trigger

A check constraint (*)

An application trigger

A view

Correct

25. The following objects have been created in a user's


schema:
- a function FUNC1
- A package PACK1 which contains a public procedure PACKPROC and a
private function PACKFUNC
- a trigger TRIGG1.
The procedure and functions each accept a single IN parameter of type
NUMBER, and the functions return BOOLEANs. Which of the following calls
to these objects (from an anonymous block) are correct? (Choose two.)
Mark for Review
(1) Points

(Choose all correct answers)

pack1.packproc(25); (*)

SELECT func1(100) FROM dual;

trigg1;

IF pack1.packfunc(40) THEN ...

IF func1(75) THEN ... (*)

Correct26. You can code COMMIT


and ROLLBACK statements in a trigger body. True or False? Mark for
Review
(1) Points

True

False (*)

Correct

27. A trigger can be created in the database or within an


application. True or False? Mark for Review
(1) Points
True (*)

False

Correct

28. An Oracle directory called FILESDIR has been created by


executing:
CREATE OR REPLACE DIRECTORY filesdir AS 'C:\NEWFILES';
Which of the following will create a new text file called
C:\NEWFILES\EMP_REPORT.TXT ? Mark for Review
(1) Points

UTL_FILE.CREATE('FILESDIR','EMP_REPORT.TXT');

UTL_FILE.FOPEN('C:\NEWFILES\EMP_REPORT.TXT','w');

UTL_FILE.FOPEN('FILESDIR','EMP_REPORT.TXT','w'); (*)

UTL_FILE.OPEN('FILESDIR','EMP_REPORT.TXT','c');

Correct

29. Why is it better to use DBMS_OUTPUT only in anonymous


blocks, not inside stored subprograms such as procedures? Mark for
Review
(1) Points

Because DBMS_OUTPUT cannot be used inside


procedures

Because anonymous blocks display messages


while the block is executing, while procedures do not display anything
until their execution has finished

Because DBMS_OUTPUT should be used only for


testing and debugging PL/SQL code (*)

Because DBMS_OUTPUT can raise a NO_DATA_FOUND


exception if used inside a packaged procedure

Correct

30. Which of the following best describes the purpose of the


UTL_FILE package? Mark for Review
(1) Points
It is used to load binary files such as
employees' photos into the database.

It is used to read and write text files


stored outside the database. (*)

It is used to find out how much free space is


left on an operating system disk.

It is used to query CHAR and VARCHAR2 columns


in tables.

Correct31. What will be displayed


when the following code is executed?

BEGIN
DBMS_OUTPUT.PUT('I do like');
DBMS_OUTPUT.PUT_LINE('to be');
DBMS_OUTPUT.PUT('beside the seaside');
END; Mark for Review
(1) Points

I do like to be
beside the seaside

I do like
to be
beside the seaside

I do like to be

I do liketo be

(*)

I do like to be beside the seaside

Incorrect. Refer to Section 9.

32. Every subprogram which has been declared in a package


specification must also be included in the package body. Triue or False?
Mark for Review
(1) Points

True (*)

False

Incorrect. Refer to Section 9.


33. The following package specification has been created:

CREATE OR REPLACE PACKAGE mypack IS


FUNCTION myfunc(p_funcparam DATE) RETURN BOOLEAN;
PROCEDURE myproc(p_procparam IN NUMBER);
END mypack;

Which of the following will correctly invoke the package subprograms?


(Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

mypack.myfunc('22-JAN-07');

mypack.myproc(35);

(*)

IF NOT mypack.myfunc(SYSDATE) THEN


DBMS_OUTPUT.PUT_LINE('Message');
END IF;

(*)

myproc(40);

v_num := mypack.myproc(22);

Correct

34. Which one of the following can NOT be part of a Package


? Mark for Review
(1) Points

Procedures

Explicit cursors

Triggers (*)

Functions

Global variables

Correct

35. What is wrong with the following syntax for creating a


package specification?
CREATE OR REPLACE PACKAGE mypack IS
g_constant1 NUMBER(6) := 100;
FUNCTION func1 (p_param1 IN VARCHAR2);
FUNCTION func2;
END mypack; Mark for Review
(1) Points

You cannot declare constants in the


specification.

A package must contain at least one


procedure.

The RETURN datatype of the functions must be


specified.

(*)

The first line should be:


CREATE OR REPLACE PACKAGE SPECIFICATION mypack IS

Nothing is wrong, this code contains no


errors.

Incorrect. Refer to Section 9.36.


What is wrong with the following code?

CREATE OR REPLACE TRIGGER loc_trigg


BEFORE DELETE ON locations
BEGIN
RAISE_APPLICATION_ERROR(-20201,'Invalid delete');
ROLLBACK;
END; Mark for Review
(1) Points

The last line should be:


END loc_trigg;

You cannot use RAISE_APPLICATION_ERROR inside


a trigger.

The second line should be:


BEFORE DELETE OF locations

You cannot use ROLLBACK inside a trigger.

(*)

Nothing is wrong, this trigger will compile


and execute successfully.
Correct

37. What is wrong with the following code?

CREATE OR REPLACE TRIGGER emp_dept_trigg


BEFORE UPDATE OR DELETE ON employees, departments
BEGIN
Mark for Review
(1) Points

One trigger can be associated with only one


table

(*)

The second line should be:


BEFORE (UPDATE,DELETE) ON employees, departments

DML triggers must be row triggers, so FOR


EACH ROW is missing

The second line should be:


BEFORE UPDATE OR DELETE ON employees OR departments

Incorrect. Refer to Section 10.

38. A DML statement trigger fires only once for each


triggering DML statement, while a row trigger fires once for each row
processed by the triggering statement. True or False? Mark for Review
(1) Points

True (*)

False

Correct

39. The following code will successfully create emp_trigg:


True or False?

CREATE OR REPLACE TRIGGER emp_trigg


BEFORE DELETE OF salary ON employees
BEGIN
RAISE_APPLICATION_ERROR(-20202,'Deleting salary is not allowed');
END; Mark for Review
(1) Points
True

False (*)

Incorrect. Refer to Section 10.

40. In a package, public components are declared in the


specification but private components are not. True or False? Mark for
Review
(1) Points

True (*)

False

Correct41. Package NEWPACK


contains several procedures and functions, including private function
PRIVFUNC. From where can PRIVFUNC be invoked? (Choose two.) Mark for
Review
(1) Points

(Choose all correct answers)

From an anonymous block

From any procedure in NEWPACK (*)

From any private function in another package

From any function in NEWPACK (*)

From any public procedure in another package

Correct

42. Which of the following will display the detailed code of


the subprograms in package DEPTPACK in your schema ? Mark for Review
(1) Points

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'PACKAGE'
ORDER BY line;

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'PACKAGE BODY'
ORDER BY line;

(*)

SELECT text FROM USER_SOURCE


WHERE object_name = 'DEPTPACK'
AND object_type = 'PACKAGE BODY'
ORDER BY line;

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'BODY'
ORDER BY line;

Correct

43. Package OLDPACK is in your schema. What will happen when


the following statement is executed?

DROP PACKAGE oldpack; Mark for Review


(1) Points

The body will be dropped but the


specification will be retained.

The specification will be dropped but the


body will be retained.

Both the specification and the body will be


dropped. (*)

The statement will fail because you must drop


the body before you can drop the specification.

Correct

44. When a change is made to the detailed code of a public


procedure in a package (but not to the procedure's name or parameters),
both the specification and the body must be recompiled. True or False?
Mark for Review
(1) Points

True

False (*)

Correct

45. Your schema contains four packages, each having a


specification and a body. You have also been granted privileges to access
three packages (and their bodies) in other users' schemas. What will be
displayed by the following query?

SELECT COUNT(*) FROM ALL_OBJECTS


WHERE object_type LIKE 'PACK%'
AND owner <> USER; Mark for Review
(1) Points

14

6 (*)

Correct46. We want to remove the


specification (but not the body) of package BIGPACK from the database.
Which of the following commands will do this? Mark for Review
(1) Points

DROP PACKAGE bigpack;

DROP PACKAGE SPECIFICATION bigpack;

DROP PACKAGE bigpack SPECIFICATION;

DROP PACKAGE HEADER bigpack;

None of the above (*)

Correct

47. Examine the following code. To create a row trigger,


what code should be included at Line A?

CREATE TRIGGER dept_trigg


AFTER UPDATE OR DELETE ON departments
-- Line A
BEGIN ... Mark for Review
(1) Points

AFTER EACH ROW

FOR EVERY ROW

FOR EACH ROW (*)

ON EACH ROW

ON EVERY ROW

Correct

48. With which kind of trigger can the :OLD and :NEW
qualifiers be used? Mark for Review
(1) Points

DDL triggers

Database Event triggers

Statement triggers

Row triggers (*)

AFTER triggers

Correct

49. In the following code:

CREATE TRIGGER mytrigg


INSTEAD OF INSERT OR UPDATE ON my_object_name
FOR EACH ROW
BEGIN ...
my_object_name can be the name of a table. True or False? Mark for
Review
(1) Points

True

False (*)

Incorrect. Refer to Section 10.

50. Examine the following trigger. It should raise an


application error if a user tries to update an employee's last name. It
should allow updates to all other columns of the EMPLOYEES table. What
should be coded at line A?

CREATE TRIGGER stop_ln_trigg


BEFORE UPDATE ON employees
BEGIN
-- Line A
RAISE_APPLICATION_ERROR(-20201,'Updating last name not allowed');
END IF;
END; Mark for Review
(1) Points

IF UPDATING LAST_NAME THEN

IF UPDATING('LAST_NAME') THEN (*)

IF UPDATE('LAST_NAME') THEN

IF UPDATING THEN

Correct
Mid Term Exam Semester 2

1. What is wrong with the following code?

CREATE OR REPLACE TRIGGER emp_dept_trigg


BEFORE UPDATE OR DELETE ON employees, departments
BEGIN
Mark for Review
(1) Points

One trigger can be associated with only one


table

(*)

The second line should be:


BEFORE (UPDATE,DELETE) ON employees, departments

DML triggers must be row triggers, so FOR


EACH ROW is missing

The second line should be:


BEFORE UPDATE OR DELETE ON employees OR departments

Incorrect. Refer to Section 10.

2. Examine the following code:

CREATE TRIGGER emp_trigg


-- Line A
BEGIN
INSERT INTO log_table VALUES (USER, SYSDATE);
END;

Which of the following can NOT be coded at Line A? Mark for Review
(1) Points

BEFORE UPDATE ON employees

AFTER INSERT OR DELETE ON employees

AFTER SELECT ON employees (*)

BEFORE DELETE ON employees

AFTER UPDATE OF last_name ON employees

Incorrect. Refer to Section 10.

3. You need to create a trigger that will fire whenever an


employee's salary or job_id is updated, but not when any other column of
the EMPLOYEES table is updated. Which of the following is the correct
syntax to do this? Mark for Review
(1) Points

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE ON employees (salary, job_id)
BEGIN ...

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE OF salary, job_id ON employees
BEGIN ...

(*)

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE OF (salary, job_id) ON employees
BEGIN ...

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE OF salary OR job_id ON employees
BEGIN ...

Incorrect. Refer to Section 10.

4. What is wrong with the following code?

CREATE OR REPLACE TRIGGER loc_trigg


BEFORE DELETE ON locations
BEGIN
RAISE_APPLICATION_ERROR(-20201,'Invalid delete');
ROLLBACK;
END; Mark for Review
(1) Points

The last line should be:


END loc_trigg;

You cannot use RAISE_APPLICATION_ERROR inside


a trigger.

The second line should be:


BEFORE DELETE OF locations

You cannot use ROLLBACK inside a trigger.

(*)

Nothing is wrong, this trigger will compile


and execute successfully.
Incorrect. Refer to Section 10.

5. Which of the following are good reasons for creating and


using Packages?

Related procedures, functions and variables can be grouped together as a


single unit
We can recompile the package body without having to recompile the
specification
We can create packages without needing any system privileges
We can declare INDEX BY tables and use them as parameters Mark for
Review
(1) Points

A and B

A, B and C

A and C

A, B and D (*)

A, B, C and D

Incorrect. Refer to Section 9.


6. The following package specification has been created:

CREATE OR REPLACE PACKAGE mypack IS


FUNCTION myfunc(p_funcparam DATE) RETURN BOOLEAN;
PROCEDURE myproc(p_procparam IN NUMBER);
END mypack;

Which of the following will correctly invoke the package subprograms?


(Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

mypack.myfunc('22-JAN-07');

mypack.myproc(35);

(*)

IF NOT mypack.myfunc(SYSDATE) THEN


DBMS_OUTPUT.PUT_LINE('Message');
END IF;

(*)

myproc(40);
v_num := mypack.myproc(22);

Correct

7. Which one of the following can NOT be part of a Package


? Mark for Review
(1) Points

Procedures

Explicit cursors

Triggers (*)

Functions

Global variables

Incorrect. Refer to Section 9.

8. Which of the following statements about packages is NOT


true ? Mark for Review
(1) Points

All procedures and functions must be declared


in the specification. (*)

Cursors can be declared in the specification.

The body contains the detailed code of the


subprograms.

Variables can be declared in the body.

The specification must be created before the


body.

Incorrect. Refer to Section 9.

9. Which of the following SQL statements can be included in


a PL/SQL block only by using Dynamic SQL? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

DELETE

SAVEPOINT

ALTER (*)
SELECT ..... FOR UPDATE NOWAIT

GRANT (*)

Incorrect. Refer to Section 9.

10. The following procedure adds a column of datatype DATE


to the EMPLOYEES table. The name of the new column is passed to the
procedure as a parameter.

CREATE OR REPLACE PROCEDURE addcol


(p_col_name IN VARCHAR2) IS
v_first_string VARCHAR2(100) := 'ALTER TABLE EMPLOYEES ADD (';
v_second_string VARCHAR2(6) := ' DATE)';
BEGIN
... Line A
END;

Which of the following will work correctly when coded at line A? (Choose
two.) Mark for Review
(1) Points

(Choose all correct answers)

v_first_string || p_col_name ||
v_second_string;

EXECUTE IMMEDIATE v_first_string ||


p_col_name || v_second_string;

(*)

EXECUTE IMMEDIATE 'v_first_string' ||


p_col_name || 'v_second_string';

v_first_string := v_first_string ||
p_col_name;
EXECUTE IMMEDIATE v_first_string || v_second_string;

(*)

EXECUTE v_first_string || p_col_name ||


v_second_string;

Incorrect. Refer to Section 9.11.


A SQL statement can pass through several stages. Which of the
following is NOT one of these stages? Mark for Review
(1) Points

BIND

FETCH
PARSE

RETURN (*)

EXECUTE

Incorrect. Refer to Section 9.

12. You want to create a function which drops a table. You


write the following code:

CREATE OR REPLACE FUNCTION droptab


(p_tab_name IN VARCHAR2)
RETURN BOOLEAN IS
BEGIN
DROP TABLE p_tab_name;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN RETURN FALSE;
END;

Why will this procedure not compile successfully? Mark for Review
(1) Points

Because you can never drop a table from


inside a function

Because the PL/SQL compiler cannot check if


the argument of p_tab_name is a valid table-name (*)

Because you do not have the privilege needed


to drop a table

Because you cannot use RETURN in the


exception section

Correct

13. When a change is made to the detailed code of a public


procedure in a package (but not to the procedure's name or parameters),
both the specification and the body must be recompiled. True or False?
Mark for Review
(1) Points

True

False (*)

Incorrect. Refer to Section 9.


14. Package NEWPACK contains several procedures and
functions, including private function PRIVFUNC. From where can PRIVFUNC be
invoked? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

From an anonymous block

From any procedure in NEWPACK (*)

From any private function in another package

From any function in NEWPACK (*)

From any public procedure in another package

Correct

15. We want to remove the specification (but not the body)


of package BIGPACK from the database. Which of the following commands
will do this? Mark for Review
(1) Points

DROP PACKAGE bigpack;

DROP PACKAGE SPECIFICATION bigpack;

DROP PACKAGE bigpack SPECIFICATION;

DROP PACKAGE HEADER bigpack;

None of the above (*)

Incorrect. Refer to Section 9.16.


Package OLDPACK is in your schema. What will happen when the
following statement is executed?

DROP PACKAGE oldpack; Mark for Review


(1) Points

The body will be dropped but the


specification will be retained.

The specification will be dropped but the


body will be retained.

Both the specification and the body will be


dropped. (*)

The statement will fail because you must drop


the body before you can drop the specification.

Correct
17. Your schema contains four packages, each having a
specification and a body. You have also been granted privileges to access
three packages (and their bodies) in other users' schemas. What will be
displayed by the following query?

SELECT COUNT(*) FROM ALL_OBJECTS


WHERE object_type LIKE 'PACK%'
AND owner <> USER; Mark for Review
(1) Points

14

6 (*)

Incorrect. Refer to Section 9.

18. Examine the following package specification:

CREATE OR REPLACE PACKAGE taxpack IS


CURSOR empcurs IS SELECT * FROM employees;
PROCEDURE taxproc;
END mypack;

The package body of TAXPACK also includes a function called TAXFUNC.


Which one of the following statements is NOT true? Mark for Review
(1) Points

The procedure can be invoked by:

BEGIN
taxpack.taxproc;
END;

The packaage will not compile because you


cannot declare a cursor in the specification.

(*)

TAXPROC is a public procedure and TAXFUNC is


a private function

TAXPROC can invoke TAXFUNC if TAXPROC is


coded before TAXFUNC

TAXPROC can open the cursor


Incorrect. Refer to Section 9.

19. Which of the following will display the detailed code of


the subprograms in package DEPTPACK in your schema ? Mark for Review
(1) Points

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'PACKAGE'
ORDER BY line;

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'PACKAGE BODY'
ORDER BY line;

(*)

SELECT text FROM USER_SOURCE


WHERE object_name = 'DEPTPACK'
AND object_type = 'PACKAGE BODY'
ORDER BY line;

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'BODY'
ORDER BY line;

Incorrect. Refer to Section 9.

20. When a user session changes the value of a package


variable, the new value can immediately be seen by other sessions. True or
False? Mark for Review
(1) Points

True

False (*)

Incorrect. Refer to Section 9.21.


A cursor is declared in a package specification. User SIOBHAN opens
the cursor and fetches the first three rows from the cursor's active set,
but does not close the cursor.
User FRED now connects to the database. FRED can immediately fetch the
next three rows without opening the cursor. True or False? Mark for
Review
(1) Points

True

False (*)
Correct

22. Examine this code:

CREATE TRIGGER de_trigg


-- Line A
BEGIN ...

Which of the following are NOT valid at Line A ? (Choose two.) Mark
for Review
(1) Points

(Choose all correct answers)

AFTER LOGOFF ON SCHEMA (*)

AFTER LOGON ON SCHEMA

BEFORE LOGOFF ON SCHEMA

BEFORE DISCONNECT ON SCHEMA (*)

AFTER SERVERERROR ON SCHEMA

Incorrect. Refer to Section 10.

23. What is wrong with the following code?

CREATE TRIGGER call_trigg


AFTER LOGOFF ON SCHEMA
BEGIN
CALL drop_proc;
END; Mark for Review
(1) Points

You cannot code an AFTER LOGOFF trigger

When using CALL, you must not code BEGIN

When using CALL, you must not code END;

The CALL statement must not end with a


semicolon (;)

All of the above (*)

Incorrect. Refer to Section 10.

24. Which kinds of trigger can cause a mutating table


problem? (Choose two.) Mark for Review
(1) Points
(Choose all correct answers)

BEFORE UPDATE row triggers (*)

DDL triggers

AFTER DELETE row triggers (*)

Database Event triggers

INSTEAD OF triggers

Incorrect. Refer to Section 10.

25. What is the purpose of using the CALL statement in a


trigger? Mark for Review
(1) Points

It allows an INSTEAD OF trigger to be a


statement trigger.

It allows the trigger body code to be placed


in a separate procedure. (*)

It prevents cascading triggers.

It allows the trigger body code to be placed


in a separate procedure or function.

It allows both DML events and DDL events to


be handled using a single trigger.

Incorrect. Refer to Section


10.26. The database administrator wants to write a log record every
time an Oracle Server error occurs in any user's session. The DBA creates
the following trigger:

CREATE TRIGGER log_errs_trigg


-- Line A
BEGIN
INSERT INTO errlog_table VALUES (...);
END;
What should the DBA code at Line A ? Mark for Review
(1) Points

AFTER ERROR ON DATABASE

AFTER SERVER ERROR ON DATABASE

AFTER SERVERERROR ON SCHEMA

AFTER SERVERERROR ON DATABASE (*)

AFTER ORACLE ERROR ON SCHEMA


Incorrect. Refer to Section 10.

27. Which of the following statements could cause a DDL


trigger to fire? Mark for Review
(1) Points

DROP TABLE employees;

ALTER TABLE departments ADD (budget


NUMBER(8,2));

CREATE TABLE newemp AS SELECT * FROM


employees;

TRUNCATE TABLE locations;

All of the above (*)

Incorrect. Refer to Section 10.

28. Examine this code:

CREATE TRIGGER new_trigg


AFTER CREATE ON reserved_word
BEGIN ...

Which of the following can be used in place of reserved_word? (Choose


two.) Mark for Review
(1) Points

(Choose all correct answers)

TABLE

SCHEMA (*)

USER

DATABASE (*)

TABLE employees

Incorrect. Refer to Section 10.

29. Which dictionary view shows the detailed code of a


trigger body? Mark for Review
(1) Points

USER_SOURCE

USER_TRIGGERS (*)
USER_OBJECTS

USER_DML_TRIGGERS

USER_SUBPROGRAMS

Incorrect. Refer to Section 10.

30. MARY and JOE's schemas each contain an EMPLOYEES table.


JOE creates the following trigger:

CREATE TRIGGER upd_trigg


AFTER DELETE ON joe.employees
FOR EACH ROW
BEGIN
DELETE FROM mary.employees
WHERE employee_id = :OLD.employee_id;
END;

A third user TOM needs to delete rows from JOE's EMPLOYEES table. What
object privileges will TOM and JOE need? Mark for Review
(1) Points

TOM does not need any object privileges, but


JOE needs DELETE on both TOM.EMPLOYEES and MARY.EMPLOYEES

TOM needs DELETE on JOE.EMPLOYEES and JOE


needs DELETE on MARY.EMPLOYEES (*)

JOE does not need any object privileges, but


TOM needs DELETE on MARY.EMPLOYEES

TOM needs DELETE on MARY.EMPLOYEES and JOE


needs EXECUTE on TOM.UPD_TRIGG

Incorrect. Refer to Section


10.31. User AYSEGUL successfully creates the following trigger:

CREATE TRIGGER loc_trigg


BEFORE UPDATE ON aysegul.locations
BEGIN ...

AYSEGUL now tries to drop the LOCATIONS table. What happens? Mark for
Review
(1) Points

An error message is displayed because you


cannot drop a table that is associated with a trigger.

The table is dropped and the trigger is


disabled.

The trigger is dropped but the table is not


dropped.
Both the table and the trigger are dropped.
(*)

None of the above.

Incorrect. Refer to Section 10.

32. A public function in a package is invoked from within a


SQL statement. The function's code can include a COMMIT statement. True or
False? Mark for Review
(1) Points

True

False (*)

Correct

33. Which of the following statements about a package


initialization block is true? Mark for Review
(1) Points

It cannot contain any SQL statements.

It is an anonymous block at the end of a


package body. (*)

It is a procedure in a package that must be


invoked before the rest of the package can be used.

It is an anonymous block in the package


specification.

It is executed automatically every time any


global variable in the package is referenced.

Incorrect. Refer to Section 9.

34. We never need to use a forward declaration when invoking


a public subprogram. True or False? Mark for Review
(1) Points

True (*)

False

Incorrect. Refer to Section 9.


35. Which two of these declarations cannot be in the same
package specification?

PROCEDURE myproc (p1 NUMBER, p2 VARCHAR2);


PROCEDURE myproc (p1 VARCHAR2, p2 NUMBER);
PROCEDURE myproc (p1 NUMBER, p2 CHAR);
PROCEDURE myproc (p1 NUMBER); Mark for Review
(1) Points

1 and 2

1 and 3 (*)

2 and 3

3 and 4

1 and 4

Correct36. A trigger can be a


public subprogram within a PL/SQL package. True or False? Mark for
Review
(1) Points

True

False (*)

Correct

37. What type of database object would you create to write


an auditing record automatically every time a user connects to the
database? Mark for Review
(1) Points

A procedure

A complex view

A trigger (*)

A function

A package

Correct

38. You can use a trigger to prevent rows from being deleted
from the EMPLOYEES table on Mondays. True or False? Mark for Review
(1) Points

True (*)
False

Correct

39. A trigger can be created in the database or within an


application. True or False? Mark for Review
(1) Points

True (*)

False

Incorrect. Refer to Section 10.

40. You can code COMMIT and ROLLBACK statements in a trigger


body. True or False? Mark for Review
(1) Points

True

False (*)

Incorrect. Refer to Section


10.41. A business rule states that an employee's salary cannot be
greater than 99,999.99 or less than 0. The best way to enforce this rule
is by using: Mark for Review
(1) Points

A datatype of NUMBER(7,2) for the SALARY


column

A database trigger

A check constraint (*)

An application trigger

A view

Correct

42. Which of the following are good guidelines to follow


when creating a database trigger? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

Where possible, use a trigger to enforce a


foreign key constraint.
Use triggers to override privilege checking
and view other users' private tables.

Do not use a trigger to replace or duplicate


something which the Oracle Server does automatically. (*)

Use triggers to prevent unauthorized users


from SELECTing confidential data.

Do not create a trigger that automatically


fires another trigger. (*)

Incorrect. Refer to Section 10.

43. Which of the following best describes the purpose of the


UTL_FILE package? Mark for Review
(1) Points

It is used to load binary files such as


employees' photos into the database.

It is used to read and write text files


stored outside the database. (*)

It is used to find out how much free space is


left on an operating system disk.

It is used to query CHAR and VARCHAR2 columns


in tables.

Incorrect. Refer to Section 9.

44. The DBMS_OUTPUT.PUT procedure places text in a buffer


but does not display the contents of the buffer. True or False? Mark
for Review
(1) Points

True (*)

False

Correct

45. DBMS_OUTPUT.PUT_LINE can be invoked from inside a


private packaged function. True or False? Mark for Review
(1) Points

True (*)

False
Correct46. An Oracle directory
called FILESDIR has been created by executing:
CREATE OR REPLACE DIRECTORY filesdir AS 'C:\NEWFILES';
Which of the following will create a new text file called
C:\NEWFILES\EMP_REPORT.TXT ? Mark for Review
(1) Points

UTL_FILE.CREATE('FILESDIR','EMP_REPORT.TXT');

UTL_FILE.FOPEN('C:\NEWFILES\EMP_REPORT.TXT','w');

UTL_FILE.FOPEN('FILESDIR','EMP_REPORT.TXT','w'); (*)

UTL_FILE.OPEN('FILESDIR','EMP_REPORT.TXT','c');

Incorrect. Refer to Section 9.

47. Examine the following code. To create a row trigger,


what code should be included at Line A?

CREATE TRIGGER dept_trigg


AFTER UPDATE OR DELETE ON departments
-- Line A
BEGIN ... Mark for Review
(1) Points

AFTER EACH ROW

FOR EVERY ROW

FOR EACH ROW (*)

ON EACH ROW

ON EVERY ROW

Incorrect. Refer to Section 10.

48. Examine the following trigger. It should raise an


application error if a user tries to update an employee's last name. It
should allow updates to all other columns of the EMPLOYEES table. What
should be coded at line A?

CREATE TRIGGER stop_ln_trigg


BEFORE UPDATE ON employees
BEGIN
-- Line A
RAISE_APPLICATION_ERROR(-20201,'Updating last name not allowed');
END IF;
END; Mark for Review
(1) Points
IF UPDATING LAST_NAME THEN

IF UPDATING('LAST_NAME') THEN (*)

IF UPDATE('LAST_NAME') THEN

IF UPDATING THEN

Incorrect. Refer to Section 10.

49. There are 3 employees in department 90 and 5 employees


in department 50. The following trigger has been created:

CREATE TRIGGER upd_emp_trigg


AFTER UPDATE ON employees
FOR EACH ROW
BEGIN

A user now executes:

UPDATE employees SET department_id = 50


WHERE department_id = 90;

How many times will the trigger fire? Mark for Review
(1) Points

Once

Three times (*)

Four times

Five times

Eight times

Incorrect. Refer to Section 10.

50. With which kind of trigger can the :OLD and :NEW
qualifiers be used? Mark for Review
(1) Points

DDL triggers

Database Event triggers

Statement triggers

Row triggers (*)

AFTER triggers
Incorrect. Refer to Section 10.
Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

1. MARY wants HENRY to be able to query her EMPLOYEES table. Mary


executes the following code:
DECLARE
v_grant_stmt VARCHAR2(50);
BEGIN
v_grant_stmt := 'GRANT SELECT ON employees TO henry';
DBMS_SQL.EXECUTE(v_grant_stmt);
END;

Mary has successfully granted the privilege to Henry. True or False?


Mark for Review
(1) Points

True

False (*)

Correct

2. A public packaged procedure contains the following SQL statement:


UPDATE employees SET salary = salary * 1.1;
When is this SQL statement parsed? Mark for Review
(1) Points

When the package specification is created

When the package body is created (*)

When the package header is loaded into memory.

When the package is loaded into memory.

Only the first time the procedure is executed.

Incorrect. Refer to Section 9.

3. The following procedure adds a column of datatype DATE to the


EMPLOYEES table. The name of the new column is passed to the procedure as a
parameter.
CREATE OR REPLACE PROCEDURE addcol
(p_col_name IN VARCHAR2) IS
v_first_string VARCHAR2(100) := 'ALTER TABLE EMPLOYEES ADD (';
v_second_string VARCHAR2(6) := ' DATE)';
BEGIN
... Line A
END;
Which of the following will work correctly when coded at line A? (Choose
two.)
Mark for Review
(1) Points

(Choose all correct answers)

v_first_string || p_col_name || v_second_string;

EXECUTE IMMEDIATE v_first_string || p_col_name || v_second_string;


(*)

EXECUTE IMMEDIATE 'v_first_string' || p_col_name || 'v_second_string';

v_first_string := v_first_string || p_col_name;


EXECUTE IMMEDIATE v_first_string || v_second_string;
(*)

EXECUTE v_first_string || p_col_name || v_second_string;

Correct

4. Examine the following code:


CREATE OR REPLACE PROCEDURE myproc IS
CURSOR c_curs IS SELECT view_name FROM user_views;
BEGIN
FOR v_curs_rec IN c_curs LOOP
EXECUTE IMMEDIATE 'DROP VIEW ' || v_curs_rec.view_name; END
LOOP;
END;

What will happen when this procedure is invoked?


Mark for Review
(1) Points

All views in the user's schema will be dropped. (*)

The procedure will not compile successfully because the syntax of


EXECUTE IMMEDIATE is incorrect.

The procedure will raise an exception because Dynamic SQL can drop
tables but cannot drop views.

The procedure will raise an exception because one of the views is a


complex view.

Correct

5. INSTEAD OF triggers are always row triggers, even if FOR EACH ROW is
omitted. True or False? Mark for Review
(1) Points
True (*)

False

Correct

Page 1 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

6. Examine the following code. To create a row trigger, what code should
be included at Line A?
CREATE TRIGGER dept_trigg
AFTER UPDATE OR DELETE ON departments
-- Line A
BEGIN ...

Mark for Review


(1) Points

AFTER EACH ROW

FOR EVERY ROW

FOR EACH ROW (*)

ON EACH ROW

ON EVERY ROW

Correct

7. Which of the following can NOT be coded in the body of a DML trigger?
(Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

IF DELETING THEN

IF SELECTING THEN (*)

IF INSERTING THEN

IF UPDATING ('JOB_ID') THEN

IF OTHERS THEN (*)


Correct

8. With which kind of trigger can the :OLD and :NEW qualifiers be used?
Mark for Review
(1) Points

DDL triggers

Database Event triggers

Statement triggers

Row triggers (*)

AFTER triggers

Correct

9. The database administrator wants to write a log record every time an


Oracle Server error occurs in any user's session. The DBA creates the
following trigger:
CREATE TRIGGER log_errs_trigg
-- Line A
BEGIN
INSERT INTO errlog_table VALUES (...);
END;
What should the DBA code at Line A ?
Mark for Review
(1) Points

AFTER ERROR ON DATABASE

AFTER SERVER ERROR ON DATABASE

AFTER SERVERERROR ON SCHEMA

AFTER SERVERERROR ON DATABASE (*)

AFTER ORACLE ERROR ON SCHEMA

Correct

10. Examine the following code:


CREATE TRIGGER emp_trigg
AFTER UPDATE OF salary ON employees
FOR EACH ROW
DECLARE
v_count NUMBER;
BEGIN
-- Line A
END;

Which of the following statements is NOT allowed at Line A?


Mark for Review
(1) Points
SELECT count(*) INTO v_count FROM departments;

UPDATE employees SET job_id = 'IT_PROG' WHERE employee_id =


:OLD.employee_id;

SELECT count(*) INTO v_count FROM employees; (*)

DBMS_OUTPUT.PUT_LINE('A salary was updated');

None. All of the above are allowed.

Incorrect. Refer to Section 10.

Page 2 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

11. A trigger automatically inserts a row into a logging table every


time a user's session receives this error message:
ORA-00942: table or view does not exist
What kind of trigger is this? Mark for Review
(1) Points

A row trigger

A statement trigger

A database event trigger (*)

A DDL trigger

An AFTER trigger

Correct

12. What is the purpose of using the CALL statement in a trigger? Mark
for Review
(1) Points

It allows an INSTEAD OF trigger to be a statement trigger.

It allows the trigger body code to be placed in a separate procedure.


(*)
It prevents cascading triggers.

It allows the trigger body code to be placed in a separate procedure or


function.

It allows both DML events and DDL events to be handled using a single
trigger.

Correct

13. You want to prevent any objects in your schema from being altered or
dropped. You decide to create the following trigger:
CREATE TRIGGER stop_ad_trigg
-- Line A
BEGIN
RAISE_APPLICATION_ERROR(-20203,'Invalid Operation');
END;

What should you code at Line A ?


Mark for Review
(1) Points

AFTER ALTER OR DROP ON SCHEMA

INSTEAD OF ALTER OR DROP ON SCHEMA

BEFORE ALTER OR DROP ON SCHEMA (*)

BEFORE ALTER, DROP ON SCHEMA

AFTER ALTER, DROP ON SCHEMA

Correct

14. Which of the following statements could cause a DDL trigger to fire?
Mark for Review
(1) Points

DROP TABLE employees;

ALTER TABLE departments ADD (budget NUMBER(8,2));

CREATE TABLE newemp AS SELECT * FROM employees;

TRUNCATE TABLE locations;

All of the above (*)

Correct

15. What is wrong with the following code?


CREATE TRIGGER call_trigg
AFTER LOGOFF ON SCHEMA
BEGIN
CALL drop_proc;
END;

Mark for Review


(1) Points

You cannot code an AFTER LOGOFF trigger

When using CALL, you must not code BEGIN

When using CALL, you must not code END;

The CALL statement must not end with a semicolon (;)

All of the above (*)

Correct

Page 3 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

16. In a package, public components are declared in the specification but


private components are not. True or False? Mark for Review
(1) Points

True (*)

False

Correct

17. We want to remove the specification (but not the body) of package
BIGPACK from the database. Which of the following commands will do this?
Mark for Review
(1) Points

DROP PACKAGE bigpack;

DROP PACKAGE SPECIFICATION bigpack;

DROP PACKAGE bigpack SPECIFICATION;

DROP PACKAGE HEADER bigpack;


None of the above (*)

Correct

18. Examine the following package specification:


CREATE OR REPLACE PACKAGE taxpack IS
CURSOR empcurs IS SELECT * FROM employees;
PROCEDURE taxproc;
END mypack;

The package body of TAXPACK also includes a function called TAXFUNC. Which
one of the following statements is NOT true?
Mark for Review
(1) Points

The procedure can be invoked by:


BEGIN
taxpack.taxproc;
END;

The packaage will not compile because you cannot declare a cursor in
the specification.
(*)

TAXPROC is a public procedure and TAXFUNC is a private function

TAXPROC can invoke TAXFUNC if TAXPROC is coded before TAXFUNC

TAXPROC can open the cursor

Incorrect. Refer to Section 9.

19. Which of the following will display the detailed code of the
subprograms in package DEPTPACK in your schema ? Mark for Review
(1) Points

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'PACKAGE'
ORDER BY line;

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'PACKAGE BODY'
ORDER BY line;
(*)

SELECT text FROM USER_SOURCE


WHERE object_name = 'DEPTPACK'
AND object_type = 'PACKAGE BODY'
ORDER BY line;
SELECT text FROM USER_SOURCE
WHERE name = 'DEPTPACK'
AND type = 'BODY'
ORDER BY line;

Correct

20. A package contains both public and private subprograms. Which one of
the following statements is true? Mark for Review
(1) Points

Each subprogram is loaded into memory when it is first invoked.

The public subprograms are all loaded into memory at the same time, but
the private subprograms are loaded into memory one at a time as they are
invoked.

The whole package is loaded into memory when the first call is made to any
subprogram in the package. (*)

If three users invoke three different subprograms in the package, there


will be three copies of the code in memory.

Correct

Page 4 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

21. Package OLDPACK is in your schema. What will happen when the
following statement is executed?
DROP PACKAGE oldpack;
Mark for Review
(1) Points

The body will be dropped but the specification will be retained. The

specification will be dropped but the body will be retained. Both

the specification and the body will be dropped. (*)


The statement will fail because you must drop the body before you can drop
the specification.

Correct

22. Your schema contains four packages, each having a specification and a
body. You have also been granted privileges to access three packages (and their
bodies) in other users' schemas. What will be displayed by the
following query?
SELECT COUNT(*) FROM ALL_OBJECTS
WHERE object_type LIKE 'PACK%'
AND owner <> USER;

Mark for Review


(1) Points

14

6 (*)

Incorrect. Refer to Section 9.

23. Package CURSPACK declares a global cursor in the package


specification. The package contains three public procedures: OPENPROC opens the
cursor; FETCHPROC fetches 5 rows from the cursor's active set;
CLOSEPROC closes the cursor.
What will happen when a user session executes the following commands in the
order shown?
curspack.openproc; -- line 1
curspack.fetchproc; -- line 2
curspack.fetchproc; -- line 3
curspack.openproc; -- line 4
curspack.fetchproc; -- line 5
curspack.closeproc; -- line 6

Mark for Review


(1) Points

The first 15 rows will be fetched.

The first 10 rows will be fetched, then the first 5 rows will be
fetched again.

The first 5 rows will be fetched three times.

An error will occur at line 2.

An error will occur at line 4. (*)

Correct
24. When a user session changes the value of a package variable, the new
value can immediately be seen by other sessions. True or False? Mark for
Review
(1) Points

True

False (*)

Incorrect. Refer to Section 9.

25. A trigger can be created in the database or within an application. True


or False? Mark for Review
(1) Points

True (*)

False

Incorrect. Refer to Section 10.

Page 5 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

26. You can use a trigger to prevent rows from being deleted from the
EMPLOYEES table on Mondays. True or False? Mark for Review
(1) Points

True (*)

False

Incorrect. Refer to Section 10.

27. What type of database object would you create to write an auditing
record automatically every time a user connects to the database? Mark for
Review
(1) Points
A procedure

A complex view

A trigger (*)

A function

A package

Correct

28. A trigger can be a public subprogram within a PL/SQL package. True


or False? Mark for Review
(1) Points

True

False (*)

Correct

29. Which of the following are NOT stored inside the database? (Choose
two.) Mark for Review
(1) Points

(Choose all correct answers)

A PL/SQL package specification

A database trigger

An anonymous block (*)

An application trigger (*)

A sequence

Incorrect. Refer to Section 10.

30. Which of the following best describes a database trigger? Mark for
Review
(1) Points

A subprogram that checks whether a user has typed the correct password
to log on to the database.

A PL/SQL subprogram that executes automatically whenever an associated


database event occurs. (*)

A PL/SQL subprogram that always returns exactly one value.

A subprogram that is invoked explicitly by the calling application. A

PL/SQL subprogram that inserts rows into a logging table.


Correct

Page 6 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

31. A business rule states that an employee's salary cannot be greater


than 99,999.99 or less than 0. The best way to enforce this rule is by using:
Mark for Review
(1) Points

A datatype of NUMBER(7,2) for the SALARY column

A database trigger

A check constraint (*)

An application trigger

A view

Incorrect. Refer to Section 10.

32. Examine the following code:


CREATE OR REPLACE PACKAGE emppack IS
PROCEDURE upd_emp (p_empno IN NUMBER, p_salary IN NUMBER);
END emppack;
CREATE OR REPLACE PACKAGE BODY emppack IS
-- Line A
PROCEDURE upd_emp (p_empno IN NUMBER, p_salary IN NUMBER) IS
BEGIN
IF NOT sal_ok(p_salary) THEN
RAISE_APPLICATION_ERROR(-20201,'Invalid salary'); END
IF;
END upd_emp;
FUNCTION sal_ok(pf_salary NUMBER) RETURN BOOLEAN IS
BEGIN
IF pf_salary > 50000 THEN RETURN FALSE;
ELSE RETURN TRUE;
END IF;
END sal_ok;
END emppack;
What must be coded at Line A for this package to compile successfully?
Mark for Review
(1) Points

FUNCTION sal_ok;

FUNCTION sal_ok(pf_salary NUMBER);

FUNCTION sal_ok(pf_salary NUMBER) RETURN BOOLEAN; (*)

PROCEDURE upd_emp (p_empno IN NUMBER, p_salary IN NUMBER);

Nothing is needed at Line A

Correct

33. A public function in a package is invoked from within a SQL


statement. The function's code can include a COMMIT statement. True or
False? Mark for Review
(1) Points

True

False (*)

Incorrect. Refer to Section 9.

34. Package HRPACK contains the following public function:


FUNCTION empfunc (p_deptno NUMBER) RETURN NUMBER IS
BEGIN
UPDATE employees SET salary = salary * 1.1
WHERE department_id = p_deptno;
RETURN SQL%ROWCOUNT;
END empfunc;

What will happen when the following SQL statement is executed?

SELECT department_name, hrpack.empfunc(department_id)


FROM departments;
Mark for Review
(1) Points

The SELECT will fail because you cannot return SQL%ROWCOUNT from a
packaged function.

The SELECT will fail because you cannot call packaged functions from
within a SQL statement.

The SELECT will fail because you cannot execute a DML statement from
within a query.

The SELECT will succeed because it is referencing a different table


from the function. (*)

Incorrect. Refer to Section 9.


35. We never need to use a forward declaration when invoking a public
subprogram. True or False? Mark for Review
(1) Points

True (*)

False

Correct

Page 7 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

36. User AYSEGUL successfully creates the following trigger:


CREATE TRIGGER loc_trigg
BEFORE UPDATE ON aysegul.locations
BEGIN ...

AYSEGUL now tries to drop the LOCATIONS table. What happens?


Mark for Review
(1) Points

An error message is displayed because you cannot drop a table that is


associated with a trigger.

The table is dropped and the trigger is disabled.

The trigger is dropped but the table is not drop ped.

Both the table and the trigger are dropped. (*)

None of the above.

Correct

37. MARY and JOE's schemas each contain an EMPLOYEES table. JOE creates
the following trigger:
CREATE TRIGGER upd_trigg
AFTER DELETE ON joe.employees
FOR EACH ROW
BEGIN
DELETE FROM mary.employees
WHERE employee_id = :OLD.employee_id;
END;

A third user TOM needs to delete rows from JOE's EMPLOYEES table. What
object privileges will TOM and JOE need?
Mark for Review
(1) Points

TOM does not need any object privileges, but JOE needs DELETE on both
TOM.EMPLOYEES and MARY.EMPLOYEES

TOM needs DELETE on JOE.EMPLOYEES and JOE needs DELETE on


MARY.EMPLOYEES (*)

JOE does not need any object privileges, but TOM needs DELETE on
MARY.EMPLOYEES

TOM needs DELETE on MARY.EMPLOYEES and JOE needs EXECUTE on


TOM.UPD_TRIGG

Correct

38. Which of the following will remove a trigger in your schema named
EMP_TRIGG from the database? Mark for Review
(1) Points

DROP emp_trigg TRIGGER;

ALTER TRIGGER emp_trigg DISABLE;

DROP TRIGGER emp_trigg; (*)

REMOVE TRIGGER emp_trigg;

None of the above

Correct

39. There are five employees in department 50. The following trigger is
created:
CREATE TRIGGER upd_emp
AFTER UPDATE ON employees
BEGIN
INSERT INTO audit_table VALUES (USER, SYSDATE);
END;

A user now executes:

UPDATE employees SET salary = salary * 1.1


WHERE department_id = 50;

How many rows will be inserted into audit_table?


Mark for Review
(1) Points

One (*)
Two

Five

Six

None of the above

Correct

40. A DML statement trigger fires only once for each triggering DML
statement, while a row trigger fires once for each row processed by the
triggering statement. True or False? Mark for Review
(1) Points

True (*)

False

Correct

Page 8 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

41. What is wrong with the following code?


CREATE TRIGGER dept_trigg
BEFORE UPDATE OF department_name ON departments
BEGIN
DBMS_OUTPUT.PUT_LINE(:NEW.department_name);
END;

Mark for Review


(1) Points

You cannot use :NEW in a BEFORE trigger, only in an AFTER trigger. You

cannot use :NEW or :OLD in a statement trigger. (*)

You cannot use DBMS_OUTPUT.PUT_LINE inside a trigger.

The second line should be:


BEFORE UPDATE ON departments.department_name
Correct

42. Examine the following code:


CREATE TRIGGER emp_trigg
-- Line A
BEGIN
INSERT INTO log_table VALUES (USER, SYSDATE);
END;

Which of the following can NOT be coded at Line A?


Mark for Review
(1) Points

BEFORE UPDATE ON employees

AFTER INSERT OR DELETE ON employees

AFTER SELECT ON employees (*)

BEFORE DELETE ON employees

AFTER UPDATE OF last_name ON employees

Correct

43. What is wrong with the following syntax for creating a package
specification?
CREATE OR REPLACE PACKAGE mypack IS
g_constant1 NUMBER(6) := 100;
FUNCTION func1 (p_param1 IN VARCHAR2);
FUNCTION func2;
END mypack;

Mark for Review


(1) Points

You cannot declare constants in the specification.

A package must contain at least one procedure.

The RETURN datatype of the functions must be specified.


(*)

The first line should be:


CREATE OR REPLACE PACKAGE SPECIFICATION mypack IS

Nothing is wrong, this code contains no errors.

Correct
44. Every subprogram which has been declared in a package specification
must also be included in the package body. Triue or False? Mark for Review
(1) Points

True (*)

False

Correct

45. Which one of the following can NOT be part of a Package ? Mark for
Review
(1) Points

Procedures

Explicit cursors

Triggers (*)

Functions

Global variables

Correct

Page 9 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

46. Package MYPACK contains procedure MYPROC. You can see which
parameters MYPROC uses by executing: DESCRIBE mypack.myproc. True or False?
Mark for Review
(1) Points

True

False (*)

Correct
47. DBMS_OUTPUT.PUT_LINE can be invoked from inside a private packaged
function. True or False? Mark for Review
(1) Points

True (*)

False

Correct

48. Why is it better to use DBMS_OUTPUT only in anonymous blocks, not


inside stored subprograms such as procedures? Mark for Review
(1) Points

Because DBMS_OUTPUT cannot be used inside procedures

Because anonymous blocks display messages while the block is executing,


while procedures do not display anything until their execution has finished

Because DBMS_OUTPUT should be used only for testing and debugging


PL/SQL code (*)

Because DBMS_OUTPUT can raise a NO_DATA_FOUND exception if used inside


a packaged procedure

Incorrect. Refer to Section 9.

49. Which of the following best describes the purpose of the UTL_FILE
package? Mark for Review
(1) Points

It is used to load binary files such as employees' photos into the


database.

It is used to read and write text files stored outside the database.
(*)

It is used to find out how much free space is left on an operating


system disk.

It is used to query CHAR and VARCHAR2 columns in tables.

Correct

50. An Oracle directory called FILESDIR has been created by executing:


CREATE OR REPLACE DIRECTORY filesdir AS 'C:\NEWFILES';
Which of the following will create a new text file called
C:\NEWFILES\EMP_REPORT.TXT ? Mark for Review
(1) Points

UTL_FILE.CREATE('FILESDIR','EMP_REPORT.TXT');

UTL_FILE.FOPEN('C:\NEWFILES\EMP_REPORT.TXT','w');

UTL_FILE.FOPEN('FILESDIR','EMP_REPORT.TXT','w'); (*)
UTL_FILE.OPEN('FILESDIR','EMP_REPORT.TXT','c');

Correct

Page 10 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

1. You need to create a trigger that will fire whenever an employee's


salary or job_id is updated, but not when any other column of the EMPLOYEES
table is updated. Which of the following is the correct syntax to do this?
Mark for Review
(1) Points

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE ON employees (salary, job_id)
BEGIN ...

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE OF salary, job_id ON employees
BEGIN ...
(*)

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE OF (salary, job_id) ON employees
BEGIN ...

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE OF salary OR job_id ON employees
BEGIN ...

Incorrect. Refer to Section 10.

2. Examine the following code:


CREATE TRIGGER emp_trigg
-- Line A
BEGIN
INSERT INTO log_table VALUES (USER, SYSDATE);
END;

Which of the following can NOT be coded at Line A?


Mark for Review
(1) Points

BEFORE UPDATE ON employees

AFTER INSERT OR DELETE ON employees

AFTER SELECT ON employees (*)

BEFORE DELETE ON employees

AFTER UPDATE OF last_name ON employees

Correct

3. The following code will successfully create emp_trigg: True or False?


CREATE OR REPLACE TRIGGER emp_trigg
BEFORE DELETE OF salary ON employees
BEGIN
RAISE_APPLICATION_ERROR(-20202,'Deleting salary is not allowed');
END;

Mark for Review


(1) Points

True

False (*)

Incorrect. Refer to Section 10.

4. What is wrong with the following code?


CREATE TRIGGER dept_trigg
BEFORE UPDATE OF department_name ON departments
BEGIN
DBMS_OUTPUT.PUT_LINE(:NEW.department_name);
END;

Mark for Review


(1) Points

You cannot use :NEW in a BEFORE trigger, only in an AFTER trigger. You

cannot use :NEW or :OLD in a statement trigger. (*)

You cannot use DBMS_OUTPUT.PUT_LINE inside a trigger.

The second line should be:


BEFORE UPDATE ON departments.department_name
Correct

5. Which one of the following can NOT be part of a Package ? Mark for
Review
(1) Points

Procedures

Explicit cursors

Triggers (*)

Functions

Global variables

Correct

Page 1 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

6. Package MYPACK contains procedure MYPROC. You can see which


parameters MYPROC uses by executing: DESCRIBE mypack.myproc. True or False?
Mark for Review
(1) Points

True

False (*)

Correct

7. Which part of a package must be created first, the specification or


the body? Mark for Review
(1) Points

The body

The specification (*)

The specification and body must be created at the same time.

It does not matter which is created first.


The body can be created first, but only if the package has no
specification.

Correct

8. The following package specification has been created:


CREATE OR REPLACE PACKAGE mypack IS
FUNCTION myfunc(p_funcparam DATE) RETURN BOOLEAN;
PROCEDURE myproc(p_procparam IN NUMBER);
END mypack;

Which of the following will correctly invoke the package subprograms?


(Choose two.)
Mark for Review
(1) Points

(Choose all correct answers)

mypack.myfunc('22-JAN-07');

mypack.myproc(35);
(*)

IF NOT mypack.myfunc(SYSDATE) THEN


DBMS_OUTPUT.PUT_LINE('Message');
END IF;
(*)

myproc(40);

v_num := mypack.myproc(22);

Incorrect. Refer to Section 9.

9. The database administrator wants to write a log record every time an


Oracle Server error occurs in any user's session. The DBA creates the
following trigger:
CREATE TRIGGER log_errs_trigg
-- Line A
BEGIN
INSERT INTO errlog_table VALUES (...);
END;
What should the DBA code at Line A ?
Mark for Review
(1) Points

AFTER ERROR ON DATABASE

AFTER SERVER ERROR ON DATABASE

AFTER SERVERERROR ON SCHEMA


AFTER SERVERERROR ON DATABASE (*)

AFTER ORACLE ERROR ON SCHEMA

Correct

10. Examine the following code:


CREATE TRIGGER emp_trigg
AFTER UPDATE OF salary ON employees
FOR EACH ROW
DECLARE
v_count NUMBER;
BEGIN
-- Line A
END;

Which of the following statements is NOT allowed at Line A?


Mark for Review
(1) Points

SELECT count(*) INTO v_count FROM departments;

UPDATE employees SET job_id = 'IT_PROG' WHERE employee_id =


:OLD.employee_id;

SELECT count(*) INTO v_count FROM employees; (*)

DBMS_OUTPUT.PUT_LINE('A salary was updated');

None. All of the above are allowed.

Correct

Page 2 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

11. Examine this code:


CREATE TRIGGER de_trigg
-- Line A
BEGIN ...

Which of the following are NOT valid at Line A ? (Choose two.)


Mark for Review
(1) Points

(Choose all correct answers)

AFTER LOGOFF ON SCHEMA (*)

AFTER LOGON ON SCHEMA

BEFORE LOGOFF ON SCHEMA

BEFORE DISCONNECT ON SCHEMA (*)

AFTER SERVERERROR ON SCHEMA

Incorrect. Refer to Section 10.

12. What is the purpose of using the CALL statement in a trigger? Mark for
Review
(1) Points

It allows an INSTEAD OF trigger to be a statement trigger.

It allows the trigger body code to be placed in a separate procedure.


(*)

It prevents cascading triggers.

It allows the trigger body code to be placed in a separate procedure or


function.

It allows both DML events and DDL events to be handled using a single
trigger.

Correct

13. A trigger automatically inserts a row into a logging table every


time a user's session receives this error message:
ORA-00942: table or view does not exist
What kind of trigger is this? Mark for Review
(1) Points

A row trigger

A statement trigger

A database event trigger (*)

A DDL trigger

An AFTER trigger

Correct

14. You want to prevent any objects in your schema from being altered or
dropped. You decide to create the following trigger:
CREATE TRIGGER stop_ad_trigg
-- Line A
BEGIN
RAISE_APPLICATION_ERROR(-20203,'Invalid Operation');
END;

What should you code at Line A ?


Mark for Review
(1) Points

AFTER ALTER OR DROP ON SCHEMA

INSTEAD OF ALTER OR DROP ON SCHEMA

BEFORE ALTER OR DROP ON SCHEMA (*)

BEFORE ALTER, DROP ON SCHEMA

AFTER ALTER, DROP ON SCHEMA

Correct

15. Which kinds of trigger can cause a mutating table problem? (Choose
two.) Mark for Review
(1) Points

(Choose all correct answers)

BEFORE UPDATE row triggers (*)

DDL triggers

AFTER DELETE row triggers (*)

Database Event triggers

INSTEAD OF triggers

Correct

Page 3 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2


16. Examine the following code:
CREATE OR REPLACE PROCEDURE myproc IS
CURSOR c_curs IS SELECT view_name FROM user_views;
BEGIN
FOR v_curs_rec IN c_curs LOOP
EXECUTE IMMEDIATE 'DROP VIEW ' || v_curs_rec.view_name;
END LOOP;
END;

What will happen when this procedure is invoked?


Mark for Review
(1) Points

All views in the user's schema will be dropped. (*)

The procedure will not compile successfully because the syntax of


EXECUTE IMMEDIATE is incorrect.

The procedure will raise an exception because Dynamic SQL can drop
tables but cannot drop views.

The procedure will raise an exception because one of the views is a


complex view.

Correct

17. A SQL statement can pass through several stages. Which of the
following is NOT one of these stages? Mark for Review
(1) Points

BIND

FETCH

PARSE

RETURN (*)

EXECUTE

Correct

18. Which of the following SQL statements can be included in a PL/SQL


block only by using Dynamic SQL? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

DELETE

SAVEPOINT

ALTER (*)

SELECT ..... FOR UPDATE NOWAIT

GRANT (*)
Incorrect. Refer to Section 9.

19. MARY wants HENRY to be able to query her EMPLOYEES table. Mary
executes the following code:
DECLARE
v_grant_stmt VARCHAR2(50);
BEGIN
v_grant_stmt := 'GRANT SELECT ON employees TO henry';
DBMS_SQL.EXECUTE(v_grant_stmt);
END;

Mary has successfully granted the privilege to Henry. True or False? Mark
for Review
(1) Points

True

False (*)

Correct

20. Package CURSPACK declares a global cursor in the package


specification. The package contains three public procedures: OPENPROC opens
the cursor; FETCHPROC fetches 5 rows from the cursor's active set;
CLOSEPROC closes the cursor.
What will happen when a user session executes the following commands in the
order shown?
curspack.openproc; -- line 1
curspack.fetchproc; -- line 2
curspack.fetchproc; -- line 3
curspack.openproc; -- line 4
curspack.fetchproc; -- line 5
curspack.closeproc; -- line 6

Mark for Review


(1) Points

The first 15 rows will be fetched.

The first 10 rows will be fetched, then the first 5 rows will be
fetched again.

The first 5 rows will be fetched three times.

An error will occur at line 2.

An error will occur at line 4. (*)

Correct

Page 4 of 10
Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

21. Package MULTIPACK declares the following global variable:


g_myvar NUMBER;
User DICK executes the following:
multipack.g_myvar := 45;

User HAZEL now connects to the database. Both users immediately execute:

BEGIN
DBMS_OUTPUT.PUT_LINE(multipack.g_myvar);
END;

What values will Dick and Hazel see?


Mark for Review
(1) Points

Dick: 45, Hazel: 45

Dick: 45, Hazel: 0

Dick: 45, Hazel: null (*)

Dick: 0, Hazel: 0

Both queries will fail because the syntax of DBMS_OUTPUT.PUT_LINE is


incorrect

Incorrect. Refer to Section 9.

22. A public function in a package is invoked from within a SQL


statement. The function's code can include a COMMIT statement. True or
False? Mark for Review
(1) Points

True

False (*)

Correct

23. Which two of these declarations cannot be in the same package


specification?

PROCEDURE myproc (p1 NUMBER, p2 VARCHAR2);


PROCEDURE myproc (p1 VARCHAR2, p2 NUMBER);
PROCEDURE myproc (p1 NUMBER, p2 CHAR);
PROCEDURE myproc (p1 NUMBER);
Mark for Review
(1) Points

1 and 2

1 and 3 (*)

2 and 3

3 and 4

1 and 4

Correct

24. Examine the following package code:


CREATE OR REPLACE PACKAGE ol_pack IS
PROCEDURE subprog (p1 IN VARCHAR2, p2 IN NUMBER);
PROCEDURE subprog (param1 IN CHAR, param2 IN NUMBER);
FUNCTION subprog (param1 IN VARCHAR2, param2 IN NUMBER) RETURN DATE;
END ol_pack;

Which of the following calls will be successful? (Choose two.)


Mark for Review
(1) Points

(Choose all correct answers)

ol_pack.subprog('Jane',30);

ol_pack.subprog(param1=>'Jane',param2=>30); (*)

v_number := ol_pack.subprog(p1=>'Jane');

v_date := ol_pack.subprog('Jane',30); (*)

Incorrect. Refer to Section 9.

25. Package HRPACK contains the following public function:


FUNCTION empfunc (p_deptno NUMBER) RETURN NUMBER IS
BEGIN
UPDATE employees SET salary = salary * 1.1
WHERE department_id = p_deptno;
RETURN SQL%ROWCOUNT;
END empfunc;

What will happen when the following SQL statement is executed?

SELECT department_name, hrpack.empfunc(department_id)


FROM departments;
Mark for Review
(1) Points

The SELECT will fail because you cannot return SQL%ROWCOUNT from a
packaged function.
The SELECT will fail because you cannot call packaged functions from
within a SQL statement.

The SELECT will fail because you cannot execute a DML statement from
within a query.

The SELECT will succeed because it is referencing a different table


from the function. (*)

Correct

Page 5 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

26. We need to declare a package variable named MYVAR, which can be


referenced by any subprogram in the package but can NOT be referenced from
outside the package. In the following code, where should MYVAR be declared?
CREATE OR REPLACE PACKAGE varpack IS
-- Point A

END varpack;
CREATE OR REPLACE PACKAGE BODY varpack IS
-- Point B
PROCEDURE varproc IS
-- Point C
BEGIN

END varproc;
PROCEDURE ...

-- Point D
END varpack;

Mark for Review


(1) Points

Point A

Point B (*)

Point C

Point D
Point B or Point C, they will both work

Incorrect. Refer to Section 9.

27. In a package, public components are declared in the specification but


private components are not. True or False? Mark for Review
(1) Points

True (*)

False

Correct

28. Package OLDPACK is in your schema. What will happen when the
following statement is executed?
DROP PACKAGE oldpack;
Mark for Review
(1) Points

The body will be dropped but the specification will be retained. The

specification will be dropped but the body will be retained. Both

the specification and the body will be dropped. (*)

The statement will fail because you must drop the body before you can
drop the specification.

Correct

29. A package contains both public and private subprograms. Which one of the
following statements is true? Mark for Review
(1) Points

Each subprogram is loaded into memory when it is first invoked.

The public subprograms are all loaded into memory at the same time, but
the private subprograms are loaded into memory one at a time as they are
invoked.

The whole package is loaded into memory when the first call is made to
any subprogram in the package. (*)

If three users invoke three different subprograms in the package, there will
be three copies of the code in memory.

Correct

30. We want to remove the specification (but not the body) of package
BIGPACK from the database. Which of the following commands will do this?
Mark for Review
(1) Points
DROP PACKAGE bigpack;

DROP PACKAGE SPECIFICATION bigpack;

DROP PACKAGE bigpack SPECIFICATION;

DROP PACKAGE HEADER bigpack;

None of the above (*)

Incorrect. Refer to Section 9.

Page 6 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

31. Package NEWPACK contains several procedures and functions, including


private function PRIVFUNC. From where can PRIVFUNC be invoked? (Choose
two.) Mark for Review
(1) Points

(Choose all correct answers)

From an anonymous block

From any procedure in NEWPACK (*)

From any private function in another package

From any function in NEWPACK (*)

From any public procedure in another package

Correct

32. Your schema contains four packages, each having a specification and a
body. You have also been granted privileges to access three packages (and their
bodies) in other users' schemas. What will be displayed by the
following query?
SELECT COUNT(*) FROM ALL_OBJECTS
WHERE object_type LIKE 'PACK%'
AND owner <> USER;
Mark for Review
(1) Points

14

6 (*)

Correct

33. The DBMS_OUTPUT.PUT procedure places text in a buffer but does not
display the contents of the buffer. True or False? Mark for Review
(1) Points

True (*)

False

Correct

34. Why is it better to use DBMS_OUTPUT only in anonymous blocks, not


inside stored subprograms such as procedures? Mark for Review
(1) Points

Because DBMS_OUTPUT cannot be used inside procedures

Because anonymous blocks display messages while the block is executing,


while procedures do not display anything until their execution has finished

Because DBMS_OUTPUT should be used only for testing and debugging


PL/SQL code (*)

Because DBMS_OUTPUT can raise a NO_DATA_FOUND exception if used inside


a packaged procedure

Correct

35. The UTL_FILE package c an be used to create binary files such as


JPEGs as well as text files. True or False? Mark for Review
(1) Points

True

False (*)

Correct
Page 7 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

36. What will be displayed when the following code is executed?


BEGIN
DBMS_OUTPUT.PUT('I do like');
DBMS_OUTPUT.PUT_LINE('to be');
DBMS_OUTPUT.PUT('beside the seaside');
END;

Mark for Review


(1) Points

I do like to be
beside the seaside

I do like
to be
beside the seaside

I do like to be

I do liketo be
(*)

I do like to be beside the seaside

Incorrect. Refer to Section 9.

37. You need to disable all triggers that are associated with DML
statements on the DEPARTMENTS table. Which of the following commands should you
use? Mark for Review
(1) Points

ALTER TABLE departments DISABLE ALL TRIGGERS; (*)

ALTER TRIGGER DISABLE ALL ON departments;

ALTER TABLE departments DISABLE TRIGGERS;

DISABLE ALL TRIGGERS ON departments;


ALTER TABLE departments DROP ALL TRIGGERS;

Correct

38. After the following SQL statement is executed, all the triggers on
the DEPARTMENTS table will no longer fire, but will remain in the database.
True or False?
ALTER TABLE departments DISABLE ALL TRIGGERS;
Mark for Review
(1) Points

True (*)

False

Correct

39. MARY and JOE's schemas each contain an EMPLOYEES table. JOE creates
the following trigger:
CREATE TRIGGER upd_trigg
AFTER DELETE ON joe.employees
FOR EACH ROW
BEGIN
DELETE FROM mary.employees
WHERE employee_id = :OLD.employee_id;
END;

A third user TOM needs to delete rows from JOE's EMPLOYEES table. What
object privileges will TOM and JOE need?
Mark for Review
(1) Points

TOM does not need any object privileges, but JOE needs DELETE on both
TOM.EMPLOYEES and MARY.EMPLOYEES

TOM needs DELETE on JOE.EMPLOYEES and JOE needs DELETE on


MARY.EMPLOYEES (*)

JOE does not need any object privileges, but TOM needs DELETE on
MARY.EMPLOYEES

TOM needs DELETE on MARY.EMPLOYEES and JOE needs EXECUTE on


TOM.UPD_TRIGG

Correct

40. You can use a trigger to prevent rows from being deleted from the
EMPLOYEES table on Mondays. True or False? Mark for Review
(1) Points

True (*)

False
Correct

Page 8 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.

Mid Term Exam Semester 2

41. A trigger can be a public subprogram within a PL/SQL package. True


or False? Mark for Review
(1) Points

True

False (*)

Correct

42. Which of the following best describes a database trigger? Mark for
Review
(1) Points

A subprogram that checks whether a user has typed the correct password
to log on to the database.

A PL/SQL subprogram that executes automatically whenever an associated


database event occurs. (*)

A PL/SQL subprogram that always returns exactly one value.

A subprogram that is invoked explicitly by the calling application. A

PL/SQL subprogram that inserts rows into a logging table.

Correct

43. You can code COMMIT and ROLLBACK statements in a trigger body. True
or False? Mark for Review
(1) Points

True

False (*)
Correct

44. Which of the following are good guidelines to follow when creating a
database trigger? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

Where possible, use a trigger to enforce a foreign key constraint.

Use triggers to override privilege checking and view other users'


private tables.

Do not use a trigger to replace or duplicate something which the Oracle


Server does automatically. (*)

Use triggers to prevent unauthorized users from SELECTing confidential


data.

Do not create a trigger that automatically fires another trigger. (*)

Correct

45. What type of database object would you create to write an auditing
record automatically every time a user connects to the database? Mark for
Review
(1) Points

A procedure

A complex view

A trigger (*)

A function

A package

Correct

Page 9 of 10

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.
Mid Term Exam Semester 2

46. A business rule states that an employee's salary cannot be greater


than 99,999.99 or less than 0. The best way to enforce this rule is by using:
Mark for Review
(1) Points

A datatype of NUMBER(7,2) for the SALARY column

A database trigger

A check constraint (*)

An application trigger

A view

Correct

47. There are 3 employees in department 90 and 5 employees in department


50. The following trigger has been created:
CREATE TRIGGER upd_emp_trigg
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN

A user now executes:

UPDATE employees SET department_id = 50


WHERE department_id = 90;

How many times will the trigger fire?


Mark for Review
(1) Points

Once

Three times (*)

Four times

Five times

Eight times

Correct

48. In the following code:


CREATE TRIGGER mytrigg
INSTEAD OF INSERT OR UPDATE ON my_object_name
FOR EACH ROW
BEGIN ...
my_object_name can be the name of a table. True or False?
Mark for Review
(1) Points
True

False (*)

Incorrect. Refer to Section 10.

49. Examine the following code. To create a row trigger, what code
should be included at Line A?
CREATE TRIGGER dept_trigg
AFTER UPDATE OR DELETE ON departments
-- Line A
BEGIN ...

Mark for Review


(1) Points

AFTER EACH ROW

FOR EVERY ROW

FOR EACH ROW (*)

ON EACH ROW

ON EVERY ROW

Correct

50. With which kind of trigger can the :OLD and :NEW qualifiers be used?
Mark for Review
(1) Points

DDL triggers

Database Event triggers

Statement triggers

Row triggers (*)

AFTER triggers

Correct

Page 10 of 10

Skip navigation elements to page contents


Test: Mid Term Exam Semester 2
Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.
Mid Term Exam Semester 2
41. Which of the following will remove a trigger in your
schema named EMP_TRIGG from the database? Mark for Review
(1) Points

DROP emp_trigg TRIGGER;

ALTER TRIGGER emp_trigg DISABLE;

DROP TRIGGER emp_trigg; (*)

REMOVE TRIGGER emp_trigg;

None of the above

Correct Correct

42. Which dictionary view shows the detailed code of a


trigger body? Mark for Review
(1) Points

USER_SOURCE

USER_TRIGGERS (*)

USER_OBJECTS

USER_DML_TRIGGERS

USER_SUBPROGRAMS

Correct Correct

43. Which one of the following can NOT be part of a


Package ? Mark for Review
(1) Points

Procedures

Explicit cursors

Triggers (*)
Functions

Global variables

Correct Correct

44. Which of the following are good reasons for creating


and using Packages?

1. Related procedures, functions and variables can be grouped together


as a single unit
2. We can recompile the package body without having to recompile the
specification
3. We can create packages without needing any system privileges
4. We can declare INDEX BY tables and use them as parameters

Mark for Review


(1) Points

A and B

A, B and C

A and C

A, B and D (*)

A, B, C and D

Incorrect Incorrect. Refer to Section 9.

45. Which part of a package must be created first, the


specification or the body? Mark for Review
(1) Points

The body

The specification (*)

The specification and body must be created at the same time.

It does not matter which is created first.


The body can be created first, but only if the package has no
specification.

Correct Correct

Previous Page 9 of 10 Next Summary

Skip navigation elements to page contents


Test: Mid Term Exam Semester 2
Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.
Mid Term Exam Semester 2

46. Every subprogram which has been declared in a


package specification must also be included in the package body. Triue or
False? Mark for Review
(1) Points

True (*)

False

Correct Correct

47. DBMS_OUTPUT.PUT_LINE can be invoked from inside a


private packaged function. True or False? Mark for Review
(1) Points

True (*)

False

Correct Correct

48. Which of the following exceptions can be raised ONLY


when using the UTL_FILE package? (Choose two) Mark for Review
(1) Points

(Choose all correct answers)

INVALID_PATH (*)

NO_DATA_FOUND

VALUE_ERROR
READ_ERROR (*)

E_MYEXCEP

Incorrect Incorrect

49. An Oracle directory called FILESDIR has been created


by executing:
CREATE OR REPLACE DIRECTORY filesdir AS 'C:\NEWFILES';
Which of the following will create a new text file called
C:\NEWFILES\EMP_REPORT.TXT ? Mark for Review
(1) Points

UTL_FILE.CREATE('FILESDIR','EMP_REPORT.TXT');

UTL_FILE.FOPEN('C:\NEWFILES\EMP_REPORT.TXT','w');

UTL_FILE.FOPEN('FILESDIR','EMP_REPORT.TXT','w'); (*)

UTL_FILE.OPEN('FILESDIR','EMP_REPORT.TXT','c');

Correct Correct

50. Why is it better to use DBMS_OUTPUT only in


anonymous blocks, not inside stored subprograms such as procedures? Mark for
Review
(1) Points

Because DBMS_OUTPUT cannot be used inside procedures

Because anonymous blocks display messages while the block is


executing, while procedures do not display anything until their execution has
finished

Because DBMS_OUTPUT should be used only for testing and debugging


PL/SQL code (*)

Because DBMS_OUTPUT can raise a NO_DATA_FOUND exception if used


inside a packaged procedure

Correct Correct
Previous Page 10 of 10 Summary

Skip navigation elements to page contents


Test: Mid Term Exam Semester 2
Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.
Mid Term Exam Semester 2

36. Examine the following code. To create a row trigger,


what code should be included at Line A?

CREATE TRIGGER dept_trigg


AFTER UPDATE OR DELETE ON departments
-- Line A
BEGIN ...
Mark for Review
(1) Points

AFTER EACH ROW

FOR EVERY ROW

FOR EACH ROW (*)

ON EACH ROW

ON EVERY ROW

Correct Correct

37. INSTEAD OF triggers are always row triggers, even if


FOR EACH ROW is omitted. True or False? Mark for Review
(1) Points

True (*)

False

Correct Correct

38. When a user session changes the value of a package


variable, the new value can immediately be seen by other sessions. True or
False? Mark for Review
(1) Points
True

False (*)

Correct Correct

39. Package CURSPACK declares a global cursor in the


package specification. The package contains three public procedures:
OPENPROC opens the cursor; FETCHPROC fetches 5 rows from the cursor's
active set; CLOSEPROC closes the cursor.

What will happen when a user session executes the following commands in the
order shown?
curspack.openproc; -- line 1
curspack.fetchproc; -- line 2
curspack.fetchproc; -- line 3
curspack.openproc; -- line 4
curspack.fetchproc; -- line 5
curspack.closeproc; -- line 6
Mark for Review
(1) Points

The first 15 rows will be fetched.

The first 10 rows will be fetched, then the first 5 rows will be
fetched again.

The first 5 rows will be fetched three times.

An error will occur at line 2.

An error will occur at line 4. (*)

Correct Correct

40. MARY and JOE's schemas each contain an EMPLOYEES


table. JOE creates the following trigger:

CREATE TRIGGER upd_trigg


AFTER DELETE ON joe.employees
FOR EACH ROW
BEGIN
DELETE FROM mary.employees
WHERE employee_id = :OLD.employee_id;
END;

A third user TOM needs to delete rows from JOE's EMPLOYEES table. What
object privileges will TOM and JOE need?
Mark for Review
(1) Points

TOM does not need any object privileges, but JOE needs DELETE on
both TOM.EMPLOYEES and MARY.EMPLOYEES

TOM needs DELETE on JOE.EMPLOYEES and JOE needs DELETE on


MARY.EMPLOYEES (*)

JOE does not need any object privileges, but TOM needs DELETE on
MARY.EMPLOYEES

TOM needs DELETE on MARY.EMPLOYEES and JOE needs EXECUTE on


TOM.UPD_TRIGG

Correct Correct

Previous Page 8 of 10 Next Summary

Skip navigation elements to page contents


Test: Mid Term Exam Semester 2
Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.
Mid Term Exam Semester 2

31. Examine the following code:

CREATE TRIGGER emp_trigg


-- Line A
BEGIN
INSERT INTO log_table VALUES (USER, SYSDATE);
END;

Which of the following can NOT be coded at Line A?


Mark for Review
(1) Points

BEFORE UPDATE ON employees

AFTER INSERT OR DELETE ON employees

AFTER SELECT ON employees (*)

BEFORE DELETE ON employees

AFTER UPDATE OF last_name ON employees


Correct Correct

32. What is wrong with the following code?

CREATE OR REPLACE TRIGGER loc_trigg


BEFORE DELETE ON locations
BEGIN
RAISE_APPLICATION_ERROR(-20201,'Invalid delete');
ROLLBACK;
END;
Mark for Review
(1) Points

The last line should be:


END loc_trigg;

You cannot use RAISE_APPLICATION_ERROR inside a trigger.

The second line should be:


BEFORE DELETE OF locations

You cannot use ROLLBACK inside a trigger.

(*)

Nothing is wrong, this trigger will compile and execute


successfully.

Correct Correct

33. The following code will successfully create


emp_trigg: True or False?

CREATE OR REPLACE TRIGGER emp_trigg


BEFORE DELETE OF salary ON employees
BEGIN
RAISE_APPLICATION_ERROR(-20202,'Deleting salary is not allowed');
END;
Mark for Review
(1) Points

True

False (*)
Correct Correct

34. Examine the following trigger. It should raise an


application error if a user tries to update an employee's last name. It
should allow updates to all other columns of the EMPLOYEES table. What
should be coded at line A?

CREATE TRIGGER stop_ln_trigg


BEFORE UPDATE ON employees
BEGIN
-- Line A
RAISE_APPLICATION_ERROR(-20201,'Updating last name not allowed'); END
IF;
END;
Mark for Review
(1) Points

IF UPDATING LAST_NAME THEN

IF UPDATING('LAST_NAME') THEN (*)

IF UPDATE('LAST_NAME') THEN

IF UPDATING THEN

Correct Correct

35. Which of the following can NOT be coded in the body


of a DML trigger? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

IF DELETING THEN

IF SELECTING THEN (*)

IF INSERTING THEN

IF UPDATING ('JOB_ID') THEN

IF OTHERS THEN (*)

Correct Correct
Previous Page 7 of 10 Next Summary

Skip navigation elements to page contents


Test: Mid Term Exam Semester 2
Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.
Mid Term Exam Semester 2

26. Which of the following are good guidelines to follow


when creating a database trigger? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

Where possible, use a trigger to enforce a foreign key constraint.

Use triggers to override privilege checking and view other users'


private tables.

Do not use a trigger to replace or duplicate something which the


Oracle Server does automatically. (*)

Use triggers to prevent unauthorized users from SELECTing


confidential data.

Do not create a trigger that automatically fires another trigger.


(*)

Correct Correct

27. Which of the following are NOT stored inside the


database? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

A PL/SQL package specification

A database trigger

An anonymous block (*)

An application trigger (*)

A sequence
Correct Correct

28. A business rule states that an employee's salary


cannot be greater than 99,999.99 or less than 0. The best way to enforce
this rule is by using: Mark for Review
(1) Points

A datatype of NUMBER(7,2) for the SALARY column

A database trigger

A check constraint (*)

An application trigger

A view

Correct Correct

29. You can use a trigger to prevent rows from being


deleted from the EMPLOYEES table on Mondays. True or False? Mark for
Review
(1) Points

True (*)

False

Correct Correct

30. There are five employees in department 50. The


following trigger is created:

CREATE TRIGGER upd_emp


AFTER UPDATE ON employees
BEGIN
INSERT INTO audit_table VALUES (USER, SYSDATE);
END;

A user now executes:

UPDATE employees SET salary = salary * 1.1


WHERE department_id = 50;

How many rows will be inserted into audit_table?


Mark for Review
(1) Points

One (*)

Two

Five

Six

None of the above

Correct Correct

Previous Page 6 of 10 Next Summary

Skip navigation elements to page contents


Test: Mid Term Exam Semester 2
Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.
Mid Term Exam Semester 2

21. Examine the following package code:

CREATE OR REPLACE PACKAGE ol_pack IS


PROCEDURE subprog (p1 IN VARCHAR2, p2 IN NUMBER);
PROCEDURE subprog (param1 IN CHAR, param2 IN NUMBER);
FUNCTION subprog (param1 IN VARCHAR2, param2 IN NUMBER) RETURN DATE;
END ol_pack;

Which of the following calls will be successful? (Choose two.)


Mark for Review
(1) Points

(Choose all correct answers)

ol_pack.subprog('Jane',30);

ol_pack.subprog(param1=>'Jane',param2=>30); (*)

v_number := ol_pack.subprog(p1=>'Jane');

v_date := ol_pack.subprog('Jane',30); (*)

Correct Correct
22. Which two of these declarations cannot be in the
same package specification?

1. PROCEDURE myproc (p1 NUMBER, p2 VARCHAR2);


2. PROCEDURE myproc (p1 VARCHAR2, p2 NUMBER);
3. PROCEDURE myproc (p1 NUMBER, p2 CHAR);
4. PROCEDURE myproc (p1 NUMBER);

Mark for Review


(1) Points

1 and 2

1 and 3 (*)

2 and 3

3 and 4

1 and 4

Correct Correct

23. You can code COMMIT and ROLLBACK statements in a


trigger body. True or False? Mark for Review
(1) Points

True

False (*)

Correct Correct

24. Which of the following best describes a database


trigger? Mark for Review
(1) Points

A subprogram that checks whether a user has typed the correct


password to log on to the database.

A PL/SQL subprogram that executes automatically whenever an


associated database event occurs. (*)

A PL/SQL subprogram that always returns exactly one value.


A subprogram that is invoked explicitly by the calling application.

A PL/SQL subprogram that inserts rows into a logging table.

Correct Correct

25. The following objects have been created in a user's


schema:
- a function FUNC1
- A package PACK1 which contains a public procedure PACKPROC and a private
function PACKFUNC
- a trigger TRIGG1.
The procedure and functions each accept a single IN parameter of type
NUMBER, and the functions return BOOLEANs. Which of the following calls to
these objects (from an anonymous block) are correct? (Choose two.) Mark
for Review
(1) Points

(Choose all correct answers)

pack1.packproc(25); (*)

SELECT func1(100) FROM dual;

trigg1;

IF pack1.packfunc(40) THEN ...

IF func1(75) THEN ... (*)

Incorrect Incorrect. Refer to Section 10.

Previous Page 5 of 10 Next Summary

Skip navigation elements to page contents


Test: Mid Term Exam Semester 2
Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.
Mid Term Exam Semester 2

16. Package OLDPACK is in your schema. What will happen


when the following statement is executed?

DROP PACKAGE oldpack;


Mark for Review
(1) Points
The body will be dropped but the specification will be retained.

The specification will be dropped but the body will be retained.

Both the specification and the body will be dropped. (*)

The statement will fail because you must drop the body before you
can drop the specification.

Correct Correct

17. Your schema contains four packages, each having a


specification and a body. You have also been granted privileges to access
three packages (and their bodies) in other users' schemas. What will be
displayed by the following query?

SELECT COUNT(*) FROM ALL_OBJECTS


WHERE object_type LIKE 'PACK%'
AND owner <> USER;
Mark for Review
(1) Points

14

6 (*)

Correct Correct

18. Examine the following package specification:

CREATE OR REPLACE PACKAGE taxpack IS


CURSOR empcurs IS SELECT * FROM employees;
PROCEDURE taxproc;
END mypack;

The package body of TAXPACK also includes a function called TAXFUNC. Which
one of the following statements is NOT true?
Mark for Review
(1) Points
The procedure can be invoked by:

BEGIN
taxpack.taxproc;
END;

The packaage will not compile because you cannot declare a cursor
in the specification.

(*)

TAXPROC is a public procedure and TAXFUNC is a private function

TAXPROC can invoke TAXFUNC if TAXPROC is coded before TAXFUNC

TAXPROC can open the cursor

Correct Correct

19. Package HRPACK contains the following public


function:

FUNCTION empfunc (p_deptno NUMBER) RETURN NUMBER IS


BEGIN
UPDATE employees SET salary = salary * 1.1
WHERE department_id = p_deptno;
RETURN SQL%ROWCOUNT;
END empfunc;

What will happen when the following SQL statement is executed?

SELECT department_name, hrpack.empfunc(department_id) FROM


departments;
Mark for Review
(1) Points

The SELECT will fail because you cannot return SQL%ROWCOUNT from a
packaged function.

The SELECT will fail because you cannot call packaged functions
from within a SQL statement.

The SELECT will fail because you cannot execute a DML statement
from within a query.

The SELECT will succeed because it is referencing a different table


from the function. (*)
Correct Correct

20. Examine the following code:

CREATE OR REPLACE PACKAGE emppack IS


PROCEDURE upd_emp (p_empno IN NUMBER, p_salary IN NUMBER);
END emppack;
CREATE OR REPLACE PACKAGE BODY emppack IS
-- Line A
PROCEDURE upd_emp (p_empno IN NUMBER, p_salary IN NUMBER) IS
BEGIN
IF NOT sal_ok(p_salary) THEN
RAISE_APPLICATION_ERROR(-20201,'Invalid salary'); END
IF;
END upd_emp;
FUNCTION sal_ok(pf_salary NUMBER) RETURN BOOLEAN IS
BEGIN
IF pf_salary > 50000 THEN RETURN FALSE;
ELSE RETURN TRUE;
END IF;
END sal_ok;
END emppack;

What must be coded at Line A for this package to compile successfully?


Mark for Review
(1) Points

FUNCTION sal_ok;

FUNCTION sal_ok(pf_salary NUMBER);

FUNCTION sal_ok(pf_salary NUMBER) RETURN BOOLEAN; (*)

PROCEDURE upd_emp (p_empno IN NUMBER, p_salary IN NUMBER);

Nothing is needed at Line A

Correct Correct

Previous Page 4 of 10 Next Summary

Skip navigation elements to page contents


Test: Mid Term Exam Semester 2
Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.
Mid Term Exam Semester 2

11. A SQL statement can pass through several stages.


Which of the following is NOT one of these stages? Mark for Review
(1) Points
BIND

FETCH

PARSE

RETURN (*)

EXECUTE

Correct Correct

12. When a change is made to the detailed code of a


public procedure in a package (but not to the procedure's name or
parameters), both the specification and the body must be recompiled. True
or False? Mark for Review
(1) Points

True

False (*)

Correct Correct

13. We need to declare a package variable named MYVAR,


which can be referenced by any subprogram in the package but can NOT be
referenced from outside the package. In the following code, where should
MYVAR be declared?

CREATE OR REPLACE PACKAGE varpack IS


-- Point A

END varpack;
CREATE OR REPLACE PACKAGE BODY varpack IS
-- Point B
PROCEDURE varproc IS
-- Point C
BEGIN

END varproc;
PROCEDURE ...

-- Point D
END varpack;
Mark for Review
(1) Points
Point A

Point B (*)

Point C

Point D

Point B or Point C, they will both work

Correct Correct

14. Which of the following will display the detailed


code of the subprograms in package DEPTPACK in your schema ? Mark for
Review
(1) Points

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'PACKAGE'
ORDER BY line;

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'PACKAGE BODY'
ORDER BY line;

(*)

SELECT text FROM USER_SOURCE


WHERE object_name = 'DEPTPACK'
AND object_type = 'PACKAGE BODY'
ORDER BY line;

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'BODY'
ORDER BY line;

Correct Correct

15. A package contains both public and private


subprograms. Which one of the following statements is true? Mark for
Review
(1) Points

Each subprogram is loaded into memory when it is first invoked.

The public subprograms are all loaded into memory at the same time, but
the private subprograms are loaded into memory one at a time as they
are invoked.

The whole package is loaded into memory when the first call is made
to any subprogram in the package. (*)

If three users invoke three different subprograms in the package,


there will be three copies of the code in memory.

Correct Correct

Previous Page 3 of 10 Next Summary

Skip navigation elements to page contents


Test: Mid Term Exam Semester 2
Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.
Mid Term Exam Semester 2

6. Examine the following code:

CREATE TRIGGER emp_trigg


AFTER UPDATE OF salary ON employees
FOR EACH ROW
DECLARE
v_count NUMBER;
BEGIN
-- Line A
END;

Which of the following statements is NOT allowed at Line A?


Mark for Review
(1) Points

SELECT count(*) INTO v_count FROM departments;

UPDATE employees SET job_id = 'IT_PROG' WHERE employee_id =


:OLD.employee_id;

SELECT count(*) INTO v_count FROM employees; (*)

DBMS_OUTPUT.PUT_LINE('A salary was updated');

None. All of the above are allowed.


Incorrect Incorrect. Refer to Section 10.

7. You want to prevent any objects in your schema from


being altered or dropped. You decide to create the following trigger:

CREATE TRIGGER stop_ad_trigg


-- Line A
BEGIN
RAISE_APPLICATION_ERROR(-20203,'Invalid Operation');
END;

What should you code at Line A ?


Mark for Review
(1) Points

AFTER ALTER OR DROP ON SCHEMA

INSTEAD OF ALTER OR DROP ON SCHEMA

BEFORE ALTER OR DROP ON SCHEMA (*)

BEFORE ALTER, DROP ON SCHEMA

AFTER ALTER, DROP ON SCHEMA

Correct Correct

8. A public packaged procedure contains the following


SQL statement:
UPDATE employees SET salary = salary * 1.1;
When is this SQL statement parsed? Mark for Review
(1) Points

When the package specification is created

When the package body is created (*)

When the package header is loaded into memory.

When the package is loaded into memory.

Only the first time the procedure is executed.


Correct Correct

9. Examine the following code:

CREATE OR REPLACE PROCEDURE myproc IS


CURSOR c_curs IS SELECT view_name FROM user_views;
BEGIN
FOR v_curs_rec IN c_curs LOOP
EXECUTE IMMEDIATE 'DROP VIEW ' || v_curs_rec.view_name;
END LOOP;
END;

What will happen when this procedure is invoked?


Mark for Review
(1) Points

All views in the user's schema will be dropped. (*)

The procedure will not compile successfully because the syntax of


EXECUTE IMMEDIATE is incorrect.

The procedure will raise an exception because Dynamic SQL can drop
tables but cannot drop views.

The procedure will raise an exception because one of the views is a


complex view.

Correct Correct

10. The following procedure adds a column of datatype


DATE to the EMPLOYEES table. The name of the new column is passed to the
procedure as a parameter.

CREATE OR REPLACE PROCEDURE addcol


(p_col_name IN VARCHAR2) IS
v_first_string VARCHAR2(100) := 'ALTER TABLE EMPLOYEES ADD (';
v_second_string VARCHAR2(6) := ' DATE)';
BEGIN
... Line A
END;

Which of the following will work correctly when coded at line A? (Choose
two.)
Mark for Review
(1) Points

(Choose all correct answers)

v_first_string || p_col_name || v_second_string;


EXECUTE IMMEDIATE v_first_string || p_col_name || v_second_string;

(*)

EXECUTE IMMEDIATE 'v_first_string' || p_col_name ||


'v_second_string';

v_first_string := v_first_string || p_col_name;


EXECUTE IMMEDIATE v_first_string || v_second_string;

(*)

EXECUTE v_first_string || p_col_name || v_second_string;

Correct Correct

Previous Page 2 of 10 Next Summary

Skip navigation elements to page contents


Test: Mid Term Exam Semester 2
Review your answers, feedback, and question scores below. An asterisk (*)
indicates a correct answer.
Mid Term Exam Semester 2

1. Examine this code:

CREATE TRIGGER new_trigg


AFTER CREATE ON reserved_word
BEGIN ...

Which of the following can be used in place of reserved_word? (Choose two.)


Mark for Review
(1) Points

(Choose all correct answers)

TABLE

SCHEMA (*)

USER

DATABASE (*)

TABLE employees
Correct Correct

2. Which of the following statements could cause a DDL


trigger to fire? Mark for Review
(1) Points

DROP TABLE employees;

ALTER TABLE departments ADD (budget NUMBER(8,2));

CREATE TABLE newemp AS SELECT * FROM employees;

TRUNCATE TABLE locations;

All of the above (*)

Correct Correct

3. What is wrong with the following code?

CREATE TRIGGER call_trigg


AFTER LOGOFF ON SCHEMA
BEGIN
CALL drop_proc;
END;
Mark for Review
(1) Points

You cannot code an AFTER LOGOFF trigger

When using CALL, you must not code BEGIN

When using CALL, you must not code END;

The CALL statement must not end with a semicolon (;)

All of the above (*)

Correct Correct

4. Examine this code:

CREATE TRIGGER de_trigg


-- Line A
BEGIN ...

Which of the following are NOT valid at Line A ? (Choose two.)


Mark for Review
(1) Points

(Choose all correct answers)

AFTER LOGOFF ON SCHEMA (*)

AFTER LOGON ON SCHEMA

BEFORE LOGOFF ON SCHEMA

BEFORE DISCONNECT ON SCHEMA (*)

AFTER SERVERERROR ON SCHEMA

Correct Correct

5. Which kinds of trigger can cause a mutating table


problem? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

BEFORE UPDATE row triggers (*)

DDL triggers

AFTER DELETE row triggers (*)

Database Event triggers

INSTEAD OF triggers

Correct Correct

Page 1 of 10 Next Summary


Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*) i
ndicates a correct answer.

Section 9

1. Which of the following statements about packages is NOT true ? Mark for
Review
(1) Points
All procedures and functions must be declared in the specification. (*)

Cursors can be declared in the specification.

The body contains the detailed code of the subprograms.

Variables can be declared in the body.


The specification must be created before the body.

Correct

2. The following package specification has been created:


CREATE OR REPLACE PACKAGE mypack IS
FUNCTION myfunc(p_funcparam DATE) RETURN BOOLEAN;
PROCEDURE myproc(p_procparam IN NUMBER);
END mypack;

Which of the following will correctly invoke the package subprograms? (Ch
oose two.)
Mark for Review
(1) Points
(Choose all correct answers)

mypack.myfunc('22-JAN-07');
mypack.myproc(35);
(*)

IF NOT mypack.myfunc(SYSDATE) THEN


DBMS_OUTPUT.PUT_LINE('Message');
END IF;
(*)

myproc(40);

v_num := mypack.myproc(22);

Correct

3. Which one of the following can NOT be part of a Package ? Mark for
Review
(1) Points

Procedures
Explicit cursors

Triggers (*)

Functions

Global variables

Correct

4. What is wrong with the following syntax for creating a package specific
ation?
CREATE OR REPLACE PACKAGE mypack IS
g_constant1 NUMBER(6) := 100;
FUNCTION func1 (p_param1 IN VARCHAR2);
FUNCTION func2;
END mypack;
Mark for Review
(1) Points
You cannot declare constants in the specification.

A package must contain at least one procedure.

The RETURN datatype of the functions must be specified.


(*)

The first line should be:


CREATE OR REPLACE PACKAGE SPECIFICATION mypack IS

Nothing is wrong, this code contains no errors.

Correct

5. Which of the following statements about a package initialization block is


true? Mark for Review
(1) Points

It cannot contain any SQL statements.

It is an anonymous block at the end of a package body. (*)

It is a procedure in a package that must be invoked before the rest of the


package can be used.
It is an anonymous block in the package specification.
It is executed automatically every time any global variable in the package is
referenced.

Correct

6. Package HRPACK contains the following public function:


FUNCTION empfunc (p_deptno NUMBER) RETURN NUMBER IS
BEGIN
UPDATE employees SET salary = salary * 1.1
WHERE department_id = p_deptno;
RETURN SQL%ROWCOUNT;
END empfunc;
What will happen when the following SQL statement is executed?
SELECT department_name, hrpack.empfunc(department_id)
FROM departments;
Mark for Review
(1) Points

The SELECT will fail because you cannot return SQL%ROWCOUNT from a
packaged function.

The SELECT will fail because you cannot call packaged functions from w
ithin a SQL statement.
The SELECT will fail because you cannot execute a DML statement from
within a query.

The SELECT will succeed because it is referencing a different table from


the function. (*)

Correct

7. Package TAXPACK declares a global variable G_TAXRATE NUMBER(2,2) .


The value of the tax rate is stored in table TAXTAB in the database.
You want to read this value automatically into G_TAXRATE each time a
user session makes its first call to TAXPACK. How would you do this?
Mark for Review
(1) Points

Declare the global variable as:


g_taxrate NUMBER(2,2) := SELECT tax_rate FROM taxtab;

Create a database trigger that includes the following code:


SELECT tax_rate INTO taxpack.g_taxrate FROM taxtab;

Add a private function to the package body of TAXPACK, and invoke the
function from the user session.

Add a package initialization block to the package body of TAXPACK.


(*)

Correct

8. We never need to use a forward declaration when invoking a public su


bprogram. True or False? Mark for Review
(1) Points
True (*)

False

Correct

9. We need to declare a package variable named MYVAR, which can be r


eferenced by any subprogram in the package but can NOT be referenced fr
om outside the package. In the following code, where should MYVAR be de
clared?
CREATE OR REPLACE PACKAGE varpack IS
-- Point A
END varpack;
CREATE OR REPLACE PACKAGE BODY varpack IS
-- Point B
PROCEDURE varproc IS
-- Point C
BEGIN

END varproc;
PROCEDURE ...

-- Point D
END varpack;
Mark for Review
(1) Points

Point A
Point B (*)

Point C

Point D

Point B or Point C, they will both work

Correct

10. In a package, public components are declared in the specification but


private components are not. True or False? Mark for Review
(1) Points
True (*)

False

Correct
Page 1 of 5

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*) i
ndicates a correct answer.

Section 9

11. We want to remove the specification (but not the body) of package
BIGPACK from the database. Which of the following commands will do this ?
Mark for Review
(1) Points

DROP PACKAGE bigpack;


DROP PACKAGE SPECIFICATION bigpack;

DROP PACKAGE bigpack SPECIFICATION;

DROP PACKAGE HEADER bigpack;

None of the above (*)

Correct

12. Which of the following will display the detailed code of the subp
rograms in package DEPTPACK in your schema ? Mark for Review
(1) Points

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'PACKAGE'
ORDER BY line;
SELECT text FROM USER_SOURCE
WHERE name = 'DEPTPACK'
AND type = 'PACKAGE BODY'
ORDER BY line;
(*)

SELECT text FROM USER_SOURCE


WHERE object_name = 'DEPTPACK' AND
object_type = 'PACKAGE BODY' ORDER
BY line;

SELECT text FROM USER_SOURCE


WHERE name = 'DEPTPACK'
AND type = 'BODY'
ORDER BY line;

Correct

13. Package OLDPACK is in your schema. What will happen when the fol
lowing statement is executed?
DROP PACKAGE oldpack;
Mark for Review
(1) Points
The body will be dropped but the specification will be retained. The

specification will be dropped but the body will be retained. Both the

specification and the body will be dropped. (*)

The statement will fail because you must drop the body before you can dro p
the specification.

Correct
14. Examine the following package specification:
CREATE OR REPLACE PACKAGE taxpack IS
CURSOR empcurs IS SELECT * FROM employees;
PROCEDURE taxproc;
END mypack;

The package body of TAXPACK also includes a function called TAXFUNC.


Which one of the following statements is NOT true?
Mark for Review
(1) Points

The procedure can be invoked by:


BEGIN
taxpack.taxproc;
END;

The packaage will not compile because you cannot declare a cursor in the
specification.
(*)

TAXPROC is a public procedure and TAXFUNC is a private function

TAXPROC can invoke TAXFUNC if TAXPROC is coded before TAXF


UNC
TAXPROC can open the cursor

Correct

15. Package NEWPACK contains several procedures and functions, inc


luding private function PRIVFUNC. From where can PRIVFUNC be invoked?
(Choose two.) Mark for Review
(1) Points
(Choose all correct answers)

From an anonymous block


From any procedure in NEWPACK (*)
From any private function in another package

From any function in NEWPACK (*)

From any public procedure in another package

Correct

16. The DBMS_OUTPUT.PUT procedure places text in a buffer but does not
display the contents of the buffer. True or False? Mark for Review
(1) Points
True (*)

False

Correct

17. Which of the following best describes the purpose of the UTL_FILE
package? Mark for Review
(1) Points
It is used to load binary files such as employees' photos into the database.

It is used to read and write text files stored outside the database. (*)

It is used to find out how much free space is left on an operating system di
sk.

It is used to query CHAR and VARCHAR2 columns in tables.

Correct
18. Why is it better to use DBMS_OUTPUT only in anonymous blocks, no t
inside stored subprograms such as procedures? Mark for Review
(1) Points

Because DBMS_OUTPUT cannot be used inside procedures

Because anonymous blocks display messages while the block is executing,


while procedures do not display anything until their execution has finishe
d

Because DBMS_OUTPUT should be used only for testing and debugging


PL/SQL code (*)
Because DBMS_OUTPUT can raise a NO_DATA_FOUND exception if use d
inside a packaged procedure

Correct

19. The UTL_FILE package can be used to create binary files such as JPEG s
as well as text files. True or False? Mark for Review
(1) Points

True

False (*)

Correct

20. You want to create a function which drops a table. You write the follo
wing code:
CREATE OR REPLACE FUNCTION droptab
(p_tab_name IN VARCHAR2)
RETURN BOOLEAN IS
BEGIN
DROP TABLE p_tab_name;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN RETURN FALSE;
END;

Why will this procedure not compile successfully?


Mark for Review
(1) Points

Because you can never drop a table from inside a function

Because the PL/SQL compiler cannot check if the argument of p_tab_name is a


valid table-name (*)
Because you do not have the privilege needed to drop a table

Because you cannot use RETURN in the exception section

Correct

Page 2 of 5

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*) i
ndicates a correct answer.

Section 9

21. MARY wants HENRY to be able to query her EMPLOYEES table. Mary
executes the following code:
DECLARE
v_grant_stmt VARCHAR2(50);
BEGIN
v_grant_stmt := 'GRANT SELECT ON employees TO henry';
DBMS_SQL.EXECUTE(v_grant_stmt);
END;
Mary has successfully granted the privilege to Henry. True or False?
Mark for Review
(1) Points

True

False (*)

Correct

22. Examine the following code:


CREATE OR REPLACE PROCEDURE myproc IS
CURSOR c_curs IS SELECT view_name FROM user_views;
BEGIN
FOR v_curs_rec IN c_curs LOOP
EXECUTE IMMEDIATE 'DROP VIEW ' || v_curs_rec.view_name;
END LOOP;
END;

What will happen when this procedure is invoked?


Mark for Review
(1) Points

All views in the user's schema will be dropped. (*)

The procedure will not compile successfully because the syntax of E


XECUTE IMMEDIATE is incorrect.

The procedure will raise an exception because Dynamic SQL can drop tab les
but cannot drop views.

The procedure will raise an exception because one of the views is a comp lex
view.

Correct

23. The easiest way to include DDL statements in a PL/SQL block is to use
the DBMS_SQL package. True or False? Mark for Review
(1) Points

True

False (*)

Correct

24. Package MULTIPACK declares the following global variable:


g_myvar NUMBER;
User DICK executes the following:
multipack.g_myvar := 45;

User HAZEL now connects to the database. Both users immediately execute
:
BEGIN
DBMS_OUTPUT.PUT_LINE(multipack.g_myvar);
END;
What values will Dick and Hazel see?
Mark for Review
(1) Points
Dick: 45, Hazel: 45

Dick: 45, Hazel: 0


Dick: 45, Hazel: null (*)

Dick: 0, Hazel: 0

Both queries will fail because the syntax of DBMS_OUTPUT.PUT_LINE i s


incorrect

Correct

25. When a user session changes the value of a package variable, the new
value can immediately be seen by other sessions. True or False? Mark for
Review
(1) Points

True

False (*)

Correct

Section 10

26. In the following code:


CREATE TRIGGER mytrigg
INSTEAD OF INSERT OR UPDATE ON my_object_name
FOR EACH ROW
BEGIN ...
my_object_name can be the name of a table. True or False?
Mark for Review
(1) Points

True

False (*)

Correct

27. INSTEAD OF triggers are always row triggers, even if FOR EACH RO W
is omitted. True or False? Mark for Review
(1) Points
True (*)

False
Correct

28. Which of the following can NOT be coded in the body of a DML trig
ger? (Choose two.) Mark for Review
(1) Points
(Choose all correct answers)

IF DELETING THEN

IF SELECTING THEN (*)

IF INSERTING THEN

IF UPDATING ('JOB_ID') THEN

IF OTHERS THEN (*)

Correct

29. With which kind of trigger can the :OLD and :NEW qualifiers be use d?
Mark for Review
(1) Points

DDL triggers
Database Event triggers

Statement triggers

Row triggers (*)

AFTER triggers

Correct

30. MARY and JOE's schemas each contain an EMPLOYEES table. JOE cre
ates the following trigger:
CREATE TRIGGER upd_trigg
AFTER DELETE ON joe.employees
FOR EACH ROW
BEGIN
DELETE FROM mary.employees
WHERE employee_id = :OLD.employee_id;
END;

A third user TOM needs to delete rows from JOE's EMPLOYEES table. Wha t
object privileges will TOM and JOE need?
Mark for Review
(1) Points
TOM does not need any object privileges, but JOE needs DELE TE
on both TOM.EMPLOYEES and MARY.EMPLOYEES

TOM needs DELETE on JOE.EMPLOYEES and JOE needs DELETE on


MARY.EMPLOYEES (*)

JOE does not need any object privileges, but TOM needs DELETE on
MARY.EMPLOYEES

TOM needs DELETE on MARY.EMPLOYEES and JOE needs EXECU TE


on TOM.UPD_TRIGG

Correct

Page 3 of 5

Test: Mid Term Exam Semester 2

Review your answers, feedback, and question scores below. An asterisk (*) i
ndicates a correct answer.
Section 10
31. You need to disable all triggers that are associated with DML st
atements on the DEPARTMENTS table. Which of the following commands shou ld
you use? Mark for Review
(1) Points
ALTER TABLE departments DISABLE ALL TRIGGERS; (*)

ALTER TRIGGER DISABLE ALL ON departments;

ALTER TABLE departments DISABLE TRIGGERS;

DISABLE ALL TRIGGERS ON departments;

ALTER TABLE departments DROP ALL TRIGGERS;

Correct

32. User AYSEGUL successfully creates the following trigger:


CREATE TRIGGER loc_trigg
BEFORE UPDATE ON aysegul.locations
BEGIN ...

AYSEGUL now tries to drop the LOCATIONS table. What happens?


Mark for Review
(1) Points

An error message is displayed because you cannot drop a table that is asso
ciated with a trigger.
The table is dropped and the trigger is disabled.
The trigger is dropped but the table is not dropped.

Both the table and the trigger are dropped. (*) None

of the above.

Correct
33. The database administrator wants to write a log record every time an
Oracle Server error occurs in any user's session. The DBA creates the follow
ing trigger:
CREATE TRIGGER log_errs_trigg
-- Line A
BEGIN
INSERT INTO errlog_table VALUES (...);
END;
What should the DBA code at Line A ?
Mark for Review
(1) Points
AFTER ERROR ON DATABASE
AFTER SERVER ERROR ON DATABASE

AFTER SERVERERROR ON SCHEMA

AFTER SERVERERROR ON DATABASE (*)

AFTER ORACLE ERROR ON SCHEMA

Correct

34. You want to prevent any objects in your schema from being altered or
dropped. You decide to create the following trigger:
CREATE TRIGGER stop_ad_trigg
-- Line A
BEGIN
RAISE_APPLICATION_ERROR(-20203,'Invalid Operation');
END;

What should you code at Line A ?


Mark for Review
(1) Points

AFTER ALTER OR DROP ON SCHEMA

INSTEAD OF ALTER OR DROP ON SCHEMA


BEFORE ALTER OR DROP ON SCHEMA (*)

BEFORE ALTER, DROP ON SCHEMA

AFTER ALTER, DROP ON SCHEMA

Correct

35. Examine this code:


CREATE TRIGGER de_trigg
-- Line A
BEGIN ...

Which of the following are NOT valid at Line A ? (Choose two.)


Mark for Review
(1) Points
(Choose all correct answers)

AFTER LOGOFF ON SCHEMA (*)

AFTER LOGON ON SCHEMA

BEFORE LOGOFF ON SCHEMA


BEFORE DISCONNECT ON SCHEMA (*)

AFTER SERVERERROR ON SCHEMA

Correct

36. Which of the following statements could cause a DDL trigger to fire?
Mark for Review
(1) Points
DROP TABLE employees;
ALTER TABLE departments ADD (budget NUMBER(8,2));

CREATE TABLE newemp AS SELECT * FROM employees;

TRUNCATE TABLE locations;

All of the above (*)

Correct

37. Examine this code:


CREATE TRIGGER new_trigg
AFTER CREATE ON reserved_word
BEGIN ...

Which of the following can be used in place of reserved_word? (Choose two


.)
Mark for Review
(1) Points
(Choose all correct answers)

TABLE

SCHEMA (*)

USER

DATABASE (*)

TABLE employees

Correct

38. Which kinds of trigger can cause a mutating table problem? (Choose
two.) Mark for Review
(1) Points
(Choose all correct answers)
BEFORE UPDATE row triggers (*)

DDL triggers

AFTER DELETE row triggers (*)

Database Event triggers

INSTEAD OF triggers

Correct

39. Examine the following code:


CREATE TRIGGER emp_trigg
AFTER UPDATE OF salary ON employees
FOR EACH ROW
DECLARE
v_count NUMBER;
BEGIN
-- Line A
END;

Which of the following statements is NOT allowed at Line A?


Mark for Review
(1) Points

SELECT count(*) INTO v_count FROM departments;

UPDATE employees SET job_id = 'IT_PROG' WHERE employee_id = :


OLD.employee_id;
SELECT count(*) INTO v_count FROM employees; (*)

DBMS_OUTPUT.PUT_LINE('A salary was updated');

None. All of the above are allowed.


Correct

40. What is wrong with the following code?


CREATE OR REPLACE TRIGGER loc_trigg
BEFORE DELETE ON locations
BEGIN
RAISE_APPLICATION_ERROR(-20201,'Invalid delete');
ROLLBACK;
END;
Mark for Review
(1) Points
The last line should be:
END loc_trigg;

You cannot use RAISE_APPLICATION_ERROR inside a trigger.

The second line should be:


BEFORE DELETE OF locations

You cannot use ROLLBACK inside a trigger.


(*)

Nothing is wrong, this trigger will compile and execute successfully.

Correct

Page 4 of 5

Test: Mid Term Exam Semester 2


Review your answers, feedback, and question scores below. An asterisk (*) i
ndicates a correct answer.

Section 10

41. What is wrong with the following code?


CREATE TRIGGER dept_trigg
BEFORE UPDATE OF department_name ON departments
BEGIN
DBMS_OUTPUT.PUT_LINE(:NEW.department_name);
END;
Mark for Review
(1) Points
You cannot use :NEW in a BEFORE trigger, only in an AFTER trigger.

You cannot use :NEW or :OLD in a statement trigger. (*)

You cannot use DBMS_OUTPUT.PUT_LINE inside a trigger.

The second line should be:


BEFORE UPDATE ON departments.department_name

Incorrect. Refer to Section 10.

42. You need to create a trigger that will fire whenever an employee's s
alary or job_id is updated, but not when any other column of the EMPLOYEES
table is updated. Which of the following is the correct syntax to do this?
Mark for Review
(1) Points

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE ON employees (salary, job_id)
BEGIN ...
CREATE TRIGGER emp_upd_trigg
AFTER UPDATE OF salary, job_id ON employees
BEGIN ...
(*)

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE OF (salary, job_id) ON employees
BEGIN ...

CREATE TRIGGER emp_upd_trigg


AFTER UPDATE OF salary OR job_id ON employees
BEGIN ...

Correct

43. The following code will successfully create emp_trigg: True or False?

CREATE OR REPLACE TRIGGER emp_trigg


BEFORE DELETE OF salary ON employees
BEGIN
RAISE_APPLICATION_ERROR(-20202,'Deleting salary is not allowed')
;
END;
Mark for Review
(1) Points

True

False (*)

Correct

44. What type of database object would you create to write an auditing r
ecord automatically every time a user connects to the database? Mark for R
eview
(1) Points

A procedure
A complex view

A trigger (*)

A function

A package

Correct

45. The following objects have been created in a user's schema:


- a function FUNC1
- A package PACK1 which contains a public procedure PACKPROC and a
private function PACKFUNC
- a trigger TRIGG1.
The procedure and functions each accept a single IN parameter of type NU
MBER, and the functions return BOOLEANs. Which of the following calls to
these objects (from an anonymous block) are correct? (Choose two.) Mar
k for Review
(1) Points
(Choose all correct answers)

pack1.packproc(25); (*)

SELECT func1(100) FROM dual;

trigg1;

IF pack1.packfunc(40) THEN ...

IF func1(75) THEN ... (*)

Correct
46. You can use a trigger to prevent rows from being deleted from the
EMPLOYEES table on Mondays. True or False? Mark for Review
(1) Points
True (*)

False

Correct

47. Which of the following are good guidelines to follow when creating a
database trigger? (Choose two.) Mark for Review
(1) Points

(Choose all correct answers)

Where possible, use a trigger to enforce a foreign key constraint.

Use triggers to override privilege checking and view other users' private ta
bles.

Do not use a trigger to replace or duplicate something which the Oracle S


erver does automatically. (*)
Use triggers to prevent unauthorized users from SELECTing confidential
data.

Do not create a trigger that automatically fires another trigger. (*)

Correct

48. Which of the following are NOT stored inside the database? (Choose
two.) Mark for Review
(1) Points
(Choose all correct answers)
A PL/SQL package specification

A database trigger

An anonymous block (*)

An application trigger (*)

A sequence

Correct

49. A business rule states that an employee's salary cannot be greater tha n
99,999.99 or less than 0. The best way to enforce this rule is by using: M ark
for Review
(1) Points
A datatype of NUMBER(7,2) for the SALARY column A

database trigger

A check constraint (*)

An application trigger
A view

Correct

50. Which of the following best describes a database trigger? Mark for R
eview
(1) Points

A subprogram that checks whether a user has typed the correct password t o
log on to the database.

A PL/SQL subprogram that executes automatically whenever an associated


database event occurs. (*)

A PL/SQL subprogram that always returns exactly one value.


A subprogram that is invoked explicitly by the calling application. A

PL/SQL subprogram that inserts rows into a logging table.

Correct

Page 5 of 5
Mid Term Exam Semester 2
Which statement about group functions is true?
Group functions ignore null values.

The PAYMENT table contains these columns:


PAYMENT_ID NUMBER(9) PK
PAYMENT_DATE DATE
CUSTOMER_ID NUMBER(9)
Which SELECT statement could you use to display the number of times each customer payment was made
between January 1, 2003 and June 30, 2003 ?
SELECT customer_id, COUNT(payment_id)
FROM payment
WHERE payment_date BETWEEN '01-JAN-2003' AND '30-JUN-2003'
GROUP BY customer_id;

Evaluate this statement:


SELECT department_id, AVG(salary)
FROM employees
WHERE job_id <> 69879
GROUP BY job_id, department_id
HAVING AVG(salary) > 35000
ORDER BY department_id;
Which clauses restricts the result?
WHERE job_id <> 69879
HAVING AVG(salary) > 35000

What is the correct order of clauses in a SELECT statement?                


SELECT FROM WHERE GROUP BY HAVING ORDER BY

The MANUFACTURER table contains these columns:


MANUFACTURER_ID NUMBER
MANUFACTURER_NAME VARCHAR2(30)
TYPE VARCHAR2(25)
LOCATION_ID NUMBER
You need to display the number of unique types of manufacturers at each location. Which SELECT statement
should you use?
SELECT location_id, COUNT(DISTINCT type)
FROM manufacturer
GROUP BY location_id;

Evaluate this SELECT statement:


SELECT COUNT(employee_id), department_id
FROM employees
GROUP BY department_id;
You only want to include employees who earn more than 15000.
Which clause should you include in the SELECT statement?
WHERE salary > 15000

Evaluate this SELECT statement:


SELECT SUM(salary), department_id, manager_id
FROM employees
GROUP BY department_id, manager_id;
Which SELECT clause allows you to restrict the rows returned, based on a group function?                   
HAVING SUM(salary) > 100000 

Group functions can be nested to a depth of?


Two

The EMPLOYEES table contains these columns:


ID_NUMBER NUMBER Primary Key
NAME VARCHAR2 (30)
DEPARTMENT_ID NUMBER
SALARY NUMBER (7,2)
HIRE_DATE DATE
Evaluate this SQL statement:
SELECT id_number, name, department_id, SUM(salary)
FROM employees
WHERE salary > 25000
GROUP BY department_id, id_number, name
ORDER BY hire_date;
Why will this statement cause an error?
The HIRE_DATE column is NOT included in the GROUP BY clause.

To control the order of rows returned using SET operators, the ORDER BY clause is used ______ and is placed in
the _____ SELECT statement of the query.    
ONCE; LAST

When using SET operators the names of the columns must be identified in all of the SELECT statements used in
the query. True or False?
False

GROUPING SETS is another extension to the GROUP BY clause and is used to specify multiple groupings of data
but provide a single result set. True or False?
True

CUBE can be applied to all aggregate functions including AVG, SUM, MIN, MAX, and COUNT. True or False?
True

You use ROLLUP to:


produce subtotal values 

You use GROUPING function to:                   


Identify the extra row values created by either a ROLLUP or CUBE operation

Which statement is false?


The WITH clause decreases performance.

The Oracle server performs a correlated subquery when the subquery references a column from a table referred to
in the parent. True or False?
True

Which answer is incorrect? The parent statement can be:


An INSERT statement
The WITH clause enables a SELECT statement to define the subquery block at the start of the query, process the
block just once, label the results, and then refer to the results multiple times. True or False?
True

If a single-row subquery returns a null value and uses the equality comparison operator, what will the outer query
return?
No rows

Which comparison operator can only be used with a single-row subquery?


<>

Which of the following is a valid reason why the query below will not execute successfully?
SELECT employee_id, last_name, salary
FROM employees
WHERE department_id =
(SELECT department_id FROM employees WHERE last_name like '%u%')
Single rather than multiple value operator used.

Which operator can be used with a multiple-row subquery?


IN

You need to display all the players whose salaries are greater than or equal to John Brown's salary. Which
comparison operator should you use?
>=

You need to create a report to display the names of products with a cost value greater than the average cost of all
products. Which SELECT statement should you use?
SELECT product_name
FROM products
WHERE cost > (SELECT AVG(cost)
FROM product);

The TEACHERS and CLASS_ASSIGNMENTS tables contain these columns:


TEACHERS
TEACHER_ID NUMBER(5) Primary Key
NAME VARCHAR2 (25)
SUBJECT_ID NUMBER(5)

CLASS_ASSIGNMENTS
CLASS_ID NUMBER (5) Primary Key
TEACHER_ID NUMBER (5)
DATE
MAX_CAPACITY NUMBER (3)

All MAX_CAPACITY values are greater than 10. Which two SQL statements correctly use subqueries?
SELECT *
FROM class_assignments
WHERE max_capacity = (SELECT AVG(max_capacity) FROM class_assignments);

SELECT *
FROM teachers
WHERE teacher_id = (SELECT teacher_id FROM teachers WHERE class_id = 45963);

If you use the equality operator (=) with a subquery, how many values can the subquery return?
Only 1

You need to remove a row from the EMPLOYEES table. Which statement would you use?
DELETE with a WHERE clause

You need to update both the DEPARTMENT_ID and LOCATION_ID columns in the EMPLOYEES table using one
UPDATE statement. Which clause should you include in the UPDATE statement to update multiple columns?   
The SET clause

What keyword in an UPDATE statement speficies the columns you want to change?
SET

Examine the structures of the PRODUCTS and SUPPLIERS tables:


SUPPLIERS
SUPPLIER_ID NUMBER NOT NULL, Primary Key
SUPPLIER_NAME VARCHAR2 (25)
ADDRESS VARCHAR2 (30)
CITY VARCHAR2 (25)
REGION VARCHAR2 (10)
POSTAL_CODE VARCHAR2 (11)

PRODUCTS
PRODUCT_ID NUMBER NOT NULL, Primary Key
PRODUCT_NAME VARCHAR2 (25)
SUPPLIER_ID NUMBER Foreign key to SUPPLIER_ID of the SUPPLIERS table
CATEGORY_ID NUMBER
QTY_PER_UNIT NUMBER
UNIT_PRICE NUMBER (7,2)
QTY_IN_STOCK NUMBER
QTY_ON_ORDER NUMBER
REORDER_LEVEL NUMBER
You want to delete any products supplied by the five suppliers located in Atlanta. Which script should you use?
DELETE FROM products
WHERE supplier_id IN
(SELECT supplier_id FROM suppliers WHERE UPPER(city) = 'ATLANTA');

One of the sales representatives, Janet Roper, has informed you that she was recently married, and she has
requested that you update her name in the employee database. Her new last name is Cooper. Janet is the only
person with the last name of Roper that is employed by the company. The EMPLOYEES table contains these
columns and all data is stored in lowercase:
EMPLOYEE_ID NUMBER(10) PRIMARY KEY
LAST_NAME VARCHAR2(20)
FIRST_NAME VARCHAR2(20)
DEPARTMENT_ID VARCHAR2 (20)
HIRE_DATE DATE
SALARY NUMBER(10)
Which UPDATE statement will accomplish your objective?
UPDATE employees
SET last_name = 'cooper'
WHERE last_name = 'roper';

One of your employees was recently married. Her employee ID is still 189, however, her last name is now
Rockefeller. Which SQL statement will allow you to reflect this change?
UPDATE my_employees SET last_name = 'Rockefeller' WHERE employee_ID = 189;

Assume all the column names are correct. The following SQL statement will execute which of the following?
INSERT INTO departments (department_id, department_name, manager_id, location_id)
VALUES (70, 'Public Relations', 100, 1700);
70 will be inserted into the department_id column
You need to display each employee's name in all uppercase letters. Which function should you use?
UPPER

You query the database with this SQL statement:


SELECT CONCAT(last_name, (SUBSTR(LOWER(first_name), 4))) "Default Password"
FROM employees;
Which function will be evaluated first?
LOWER

Which SQL function is used to return the position where a specific character string begins within a larger character
string?
INSTR

Which three statements about functions are true?


The SYSDATE function returns the Oracle Server date and time.
The ROUND number function rounds a value to a specified decimal place or the nearest whole number.
The SUBSTR character function returns a portion of a string beginning at a defined character position to a specified
length.

The PRICE table contains this data:


PRODUCT_ID MANUFACTURER_ID
86950 59604
You query the database and return the value 95. Which script did you use?
SELECT SUBSTR(product_id, 3, 2)
FROM price
WHERE manufacturer_id = 59604;

You need to display the number of characters in each customer's last name. Which function should you use?
LENGTH

You issue this SQL statement:


SELECT INSTR ('organizational sales', 'al')
FROM dual;
Which value is returned by this command?
13

You issue this SQL statement:


SELECT ROUND (1282.248, -2)
FROM dual;
What value does this statement produce?
1300

Evaluate this function: MOD (25, 2) Which value is returned?


1

Which two functions can be used to manipulate number or date column values, but NOT character column values?
TRUNC
ROUND

You need to display the current year as a character value (for example: Two Thousand and One). Which element
would you use?
YEAR

Which SELECT statement will NOT return a date value?


SELECT (SYSDATE - hire_date) + 10*8
FROM employees;
You need to display the number of months between today's date and each employee's hiredate. Which function
should you use?
MONTHS_BETWEEN 

You want to create a report that displays all orders and their amounts that were placed during the month of
January. You want the orders with the highest amounts to appear first. Which query should you issue?
SELECT orderid, total
FROM orders
WHERE order_date BETWEEN '01-jan-02' AND '31-jan-02'
ORDER BY total DESC;

Evaluate this SELECT statement:


SELECT SYSDATE + 30
FROM dual;
Which value is returned by the query?
the current date plus 30 days

Which three statements concerning explicit data type conversions are true?
Use the TO_DATE function to convert a character string to a date value.
Use the TO_NUMBER function to convert a character string of digits to a number.
Use the TO_CHAR function to convert a number or date value to character string.

The EMPLOYEES table contains these columns:


EMPLOYEE_ID NUMBER(9)
LAST_NAME VARCHAR2 (25)
FIRST_NAME VARCHAR2 (25)
SALARY NUMBER(6)
You need to create a report to display the salaries of all employees. Which script should you use to display the
salaries in format: "$45,000.00"?
SELECT TO_CHAR(salary, '$999,999.00')
FROM employees;

Which statement concerning single row functions is true?


Single row functions can be nested.

Which SQL Statement should you use to display the prices in this format: "$00.30"?
SELECT TO_CHAR(price, '$99,900.99') FROM product;

Which best describes the TO_CHAR function?


The TO_CHAR function can be used to display dates and numbers according to formatting conventions that are
supported by Oracle.

The EMPLOYEES table contains these columns:


EMPLOYEE_ID NUMBER(9)
LAST_NAME VARCHAR2 (25)
FIRST_NAME VARCHAR2 (25)
HIRE_DATE DATE
You need to display HIRE_DATE values in this format: January 28, 2000
Which SELECT statement could you use?
SELECT TO_CHAR(hire_date, 'Month DD, YYYY')
FROM employees;

Which of the following General Functions will return the first non-null expression in the expression list?
COALESCE

Which statement about group functions is true?


NVL, NVL2, and COALESCE can be used with group functions to replace null values.

The STYLES table contains this data:


STYLE_ID STYLE_NAME CATEGORY COST
895840 SANDAL 85940 12.00
968950 SANDAL 85909 10.00
869506 SANDAL 89690 15.00
809090 LOAFER 89098 10.00
890890 LOAFER 89789 14.00
857689 HEEL 85940 11.00
758960 SANDAL 86979
Evaluate this SELECT statement:
SELECT style_id, style_name, category, cost
FROM styles
WHERE style_name = 'SANDAL' AND NVL(cost, 0) < 15.00 ORDER BY category, cost;
Which result will the query provide?
STYLE_ID STYLE_NAME CATEGORY COST 968950 SANDAL 85909 10.00 895840 SANDAL 85940 12.00
758960 SANDAL 86979

When joining 3 tables in a SELECT statement, how many join conditions are needed in the WHERE clause?
2

You have the following EMPLOYEES table:


EMPLOYEE_ID NUMBER(5) NOT NULL PRIMARY KEY
FIRST_NAME VARCHAR2(25)
LAST_NAME VARCHAR2(25)
ADDRESS VARCHAR2(35)
CITY VARCHAR2(25)
STATE VARCHAR2(2)
ZIP NUMBER(9)
TELEPHONE NUMBER(10)
DEPARTMENT_ID NUMBER(5) NOT NULL FOREIGN KEY
The BONUS table includes the following columns:
BONUS_ID NUMBER(5) NOT NULL PRIMARY KEY
ANNUAL_SALARY NUMBER(10)
BONUS_PCT NUMBER(3, 2)
EMPLOYEE_ID VARCHAR2(5) NOT NULL FOREIGN KEY
You want to determine the amount of each employee's bonus, as a calculation of salary times bonus. Which of the
following queries should you issue?
SELECT e.first_name, e.last_name, b.annual_salary * b. bonus_pct FROM employees e, bonus b WHERE
e.employee_id = b.employee_id;

You have been asked to create a report that lists all corporate customers and all orders that they have placed. The
customers should be listed alphabetically beginning with the letter 'A', and their corresponding order totals should
be sorted from the highest amount to the lowest amount. Which of the following statements should you issue?
SELECT c.custid, c.companyname, o.orderdate, o. custid, o.amount FROM customers c, orders o WHERE c.custid
= o.custid ORDER BY companyname, amount DESC;

Evaluate this SQL statement:


SELECT e.employee_id, e.last_name, e.first_name, d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id AND employees.department_id > 5000
ORDER BY 4;
Which clause contains a syntax error?
AND employees.department_id > 5000 (*)

You need to create a report that lists all employees in department 10 (Sales) whose salary is not equal to $25,000
per year. Which query should you issue to accomplish this task?
SELECT last_name, first_name, salary
FROM employees
WHERE salary != 25000 AND department_id = 10;

What happens when you create a Cartesian product?


All rows from one table are joined to all rows of another table

Which statement about outer joins is true?


The OR operator cannot be used to link outer join conditions.

The EMPLOYEE_ID column in the EMPLOYEES table corresponds to the EMPLOYEE_ID column of the ORDERS
table. The EMPLOYEE_ID column in the ORDERS table contains null values for rows that you need to
display. Which type of join should you use to display the data?
outer join

Using Oracle Proprietary join syntax, which two operators can be used in an outer join condition using the outer join
operator (+)?
AND and =

Which statement about a natural join is true?


Columns with the same names must have the same precision and datatype.

Which of the following best describes a natural join?


A join between two tables that includes columns that share the same name, datatypes and lengths

The following SQL statement will produce what output?


SELECT last_name, department_name
FROM employees
CROSS JOIN departments;
A Cartesian product between the two tables.

For which condition would you use an equijoin query with the USING keyword?
You need to perform a join of the CUSTOMER and ORDER tables but limit the number of columns in the join
condition.

Below find the structure of the CUSTOMERS and SALES_ORDER tables:


CUSTOMERS
CUSTOMER_ID NUMBER NOT NULL, Primary Key
CUSTOMER_NAME VARCHAR2 (30)
CONTACT_NAME VARCHAR2 (30)
CONTACT_TITLE VARCHAR2 (20)
ADDRESS VARCHAR2 (30)
CITY VARCHAR2 (25)
REGION VARCHAR2 (10)
POSTAL_CODE VARCHAR2 (20)
COUNTRY_ID NUMBER Foreign key to COUNTRY_ID column of the COUNTRY table
PHONE VARCHAR2 (20)
FAX VARCHAR2 (20)
CREDIT_LIMIT NUMBER(7,2)

SALES_ORDER
ORDER_ID NUMBER NOT NULL, Primary Key
CUSTOMER_ID NUMBER Foreign key to CUSTOMER_ID column of the CUSTOMER table
ORDER_DT DATE
ORDER_AMT NUMBER (7,2)
SHIP_METHOD VARCHAR2 (5)
You need to create a report that displays customers without a sales order. Which statement could you use?
SELECT c.customer_name
FROM customers c
WHERE c.customer_id not in (SELECT s.customer_id FROM sales_order s);

The primary advantage of using JOIN ON is:


It permits columns with different names to be joined

Evaluate this SELECT statement:


SELECT a.last_name || ', ' || a.first_name as "Patient", b.last_name || ', ' || b.first_name as "Physician", c.admission
FROM patient a
JOIN physician b
ON (b.physician_id = c.physician_id)
JOIN admission c
ON (a.patient_id = c.patient_id);
Which clause generates an error?
ON (b.physician_id = c.physician_id)

What should be included in a SELECT statement to return NULL values from all tables?
full outer joins

Which query will retrieve all the rows in the EMPLOYEES table, even if there is no match in the DEPARTMENTS
table?
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d ON (e.department_id = d.department_id);

Which type of join returns rows from one table that have NO direct match in the other table?
outer join

Evaluate this SELECT statement:


SELECT MIN(hire_date), department_id
FROM employees
GROUP BY department_id;
Which values are displayed?
The earliest hire date in each department.

Which statement about the GROUP BY clause is true?


The first column listed in the GROUP BY clause is the most major grouping.

Evaluate this SELECT statement:


SELECT MAX(salary), department_id
FROM employees
GROUP BY department_id;
Which values are displayed?
The highest salary in each department.

What will the following SQL Statement do?


SELECT job_id, COUNT(*)
FROM employees
GROUP BY job_id;
Displays each job id and the number of people assigned to that job id.

Which group function would you use to display the lowest value in the SALES_AMOUNT column?
MIN
Group functions return a value for ________________ and ________________ null values in their computations.
a row set, ignore

The EMPLOYEES table contains these columns:


EMPLOYEE_ID NUMBER(9)
LAST_NAME VARCHAR2(20)
FIRST_NAME VARCHAR2(20)
SALARY NUMBER(9,2)
HIRE_DATE DATE
BONUS NUMBER(7,2)
COMM_PCT NUMBER(4,2)
Which three functions could be used with the HIRE_DATE, LAST_NAME, or SALARY columns?
MAX
MIN
COUNT

Which group function would you use to display the total of all salary values in the EMPLOYEE table?
SUM 

You need to calculate the standard deviation for the cost of products produced in the Birmingham facility. Which
group function will you use? 
STDDEV

You need to calculate the average salary of employees in each department. Which group function will you use?
AVG

You need to compute the total salary for all employees in department 10. Which group function will you use?
SUM

Which aggregate function can be used on a column of the DATE data type?
MAX

Evaluate this SQL statement:


SELECT COUNT (amount)
FROM inventory;
What will occur when the statement is issued?
The statement will count the number of rows in the INVENTORY table where the AMOUNT column is not null.

Which SELECT statement will calculate the number of rows in the PRODUCTS table?
SELECT COUNT (*) FROM products;

The EMPLOYEES table contains these columns:


EMPLOYEE_ID NUMBER(9)
LAST_NAME VARCHAR2(20)
FIRST_NAME VARCHAR2(20)
SALARY NUMBER(7,2)
DEPARTMENT_ID NUMBER(9)
You need to display the number of employees whose salary is greater than $50,000? Which SELECT would you
use?
SELECT * FROM employees
WHERE salary < 50000; SELECT COUNT(*) FROM employees WHERE salary < 50000; SELECT COUNT(*)
FROM employees WHERE salary > 50000;

Examine the data from the LINE_ITEM table:


LINE_ITEM_ID ORDER_ID PRODUCT_ID PRICE DISCOUNT
890898 847589 848399 8.99 0.10
768385 862459 849869 5.60 0.05
867950 985490 945809 5.60
954039 439203 438925 5.25 0.15
543949 349302 453235 4.50
You query the LINE_ITEM table and a value of 3 is returned. Which SQL statement did you execute?
SELECT COUNT(discount) FROM line_item;

Evaluate this SELECT statement:


SELECT COUNT(emp_id), mgr_id, dept_id
FROM employee
WHERE status = 'I'
GROUP BY dept_id
HAVING salary > 30000
ORDER BY 2;
Why does this statement return a syntax error?
MGR_ID must be included in the GROUP BY clause.

The PRODUCTS table contains these columns:


PROD_ID NUMBER(4)
PROD_NAME VARCHAR(20)
PROD_CAT VARCHAR2(15)
PROD_PRICE NUMBER(5)
PROD_QTY NUMBER(4)
You need to identify the minimum product price in each product category. Which statement could you use to
accomplish this task?
SELECT prod_cat, MIN (prod_price)
FROM products
GROUP BY prod_cat;

You want to write a report that returns the average salary of all employees in the company, sorted by departments.
The EMPLOYEES table contains the following columns:
EMPLOYEES:
EMPLOYEE_ID NUMBER(10) PRIMARY KEY
LAST_NAME VARCHAR2(20)
FIRST_NAME VARCHAR2(20)
DEPARTMENT VARCHAR2(20)
HIRE_DATE DATE
SALARY NUMBER(10)
Which SELECT statement will return the information that you require?
SELECT AVG (salary)
FROM employees
GROUP BY department;

Evaluate this SELECT statement:


SELECT SUM(salary), department_id, department_name
FROM employees
WHERE department_id = 1
GROUP BY department;
Which clause of the SELECT statement contains a syntax error?
GROUP BY

The EMPLOYEES table contains the following columns:


EMPLOYEE_ID NUMBER(10) PRIMARY KEY
LAST_NAME VARCHAR2(20)
FIRST_NAME VARCHAR2(20)
DEPARTMENT VARCHAR2(20)
HIRE_DATE DATE
SALARY NUMBER(10)
You want to create a report that includes each employee's last name, employee identification number, date of hire
and salary. The report should include only those employees who have been with the company for more than one
year and whose salary exceeds $40,000. Which of the following SELECT statements will accomplish this task?
SELECT employee_id, last_name, hire_date, salary
FROM employees
WHERE salary > 40000
AND (sysdate-hire_date) / 365 > 1;

The PRODUCTS table contains these columns:


PRODUCT_ID NUMBER(9) PK
CATEGORY_ID VARCHAR2(10)
LOCATION_ID NUMBER(9)
DESCRIPTION VARCHAR2(30)
COST NUMBER(7,2)
PRICE NUMBER(7,2)
QUANTITY NUMBER
You display the total of the extended costs for each product category by location. You need to include only the
products that have a price less than $25.00. The extended cost of each item equals the quantity value multiplied by
the cost value. Which SQL statement will display the desired result?
SELECT category_id, SUM(cost * quantity) TOTAL, location_id FROM products WHERE price < 25.00 GROUP BY
category_id, location_id;

Which statement about the GROUP BY clause is true? 


To exclude rows before dividing them into groups using the GROUP BY clause, you should use a WHERE clause.

The PLAYERS and TEAMS tables contain these columns: 


PLAYERS PLAYER_ID NUMBER NOT NULL, Primary Key LAST_NAME VARCHAR2 (30) NOT NULL
FIRST_NAME VARCHAR2 (25) NOT NULL TEAM_ID NUMBER POSITION VARCHAR2 (25) 
TEAMS TEAM_ID NUMBER NOT NULL, Primary Key TEAM_NAME VARCHAR2 (25) 
You need to create a report that lists the names of each team with more than three goal keepers. Which SELECT
statement will produce the desired result?
SELECT t.team_name, COUNT(p.player_id)
FROM players p JOIN teams t ON (p.team_id = t.team_id)
WHERE UPPER(p.position) = 'GOAL KEEPER'
GROUP BY t.team_name HAVING COUNT(p.player_id) > 3;

The EMPLOYEES and ORDERS tables contain these columns:


EMPLOYEES
EMPLOYEE_ID NUMBER(10) NOT NULL PRIMARY KEY
FIRST_NAME VARCHAR2(30)
LAST_NAME VARCHAR2(30)
ADDRESS VARCHAR2(25)
CITY VARCHAR2(20)
STATE VARCHAR2(2)
ZIP NUMBER(9)
TELEPHONE NUMBER(10)

ORDERS
ORDER_ID NUMBER(10) NOT NULL PRIMARY KEY
EMPLOYEE_ID NUMBER(10) NOT NULL FOREIGN KEY
ORDER_DATE DATE
TOTAL NUMBER(10)
Which SELECT statement will return all orders generated by a sales representative named Franklin during the year
2001?
SELECT order_id, total
FROM ORDERS
WHERE employee_id = (SELECT employee_id FROM employees WHERE last_name = 'Franklin')
AND order_date BETWEEN '01-jan-01' AND '31-dec-01';

Using a subquery in which of the following clauses will return a syntax error?
You can use subqueries in all of the above clauses. 
Which of the following is TRUE regarding the order of subquery execution?
The subquery executes once before the main query

Which statement about subqueries is true?


Subqueries are often used in a WHERE clause to return values for an unknown conditional value.

Which operator can be used with subqueries that return only one row? 
LIKE

Examine the structure of the EMPLOYEE, DEPARTMENT, and ORDERS tables.


EMPLOYEE
EMPLOYEE_ID NUMBER(9)
LAST_NAME VARCHAR2(25)
FIRST_NAME VARCHAR2(25)
DEPARTMENT_ID NUMBER(9)

DEPARTMENT
DEPARTMENT_ID NUMBER(9)
DEPARTMENT_NAME VARCHAR2(25)
CREATION_DATE DATE

ORDERS
ORDER_ID NUMBER(9)
EMPLOYEE_ID NUMBER(9)
DATE DATE
CUSTOMER_ID NUMBER(9)
You want to display all employees who had an order after the Sales department was established. Which of the
following constructs would you use?
a single-row subquery

Examine the following EMPLOYEES table:


EMPLOYEES
EMPLOYEE_ID NUMBER(9)
LAST_NAME VARCHAR2(25)
FIRST_NAME VARCHAR2(25)
DEPARTMENT_ID NUMBER(9)
SUPERVISOR_ID NUMBER(9)
You need to produce a report that contains all employee-related information for those employees who have Brad
Carter as a supervisor. However, you are not sure which supervisor ID belongs to Brad Carter. Which query should
you issue to accomplish this task?
SELECT *
FROM employees
WHERE supervisor_id =
(SELECT employee_id
FROM employees
WHERE last_name = 'Carter');

Which best describes a single-row subquery? 


a query that returns only one row from the inner SELECT statement

Which best describes a multiple-row subquery?


A query that returns one or more rows from the inner SELECT statement

What is wrong with the following query?


SELECT employee_id, last_name
FROM employees
WHERE salary =
(SELECT MIN(salary) FROM employees GROUP BY department_id);
Subquery returns more than one row and single row comparison operator is used.

Evaluate this SELECT statement:


SELECT customer_id, name
FROM customer
WHERE customer_id IN
(SELECT customer_id
 FROM customer
 WHERE state_id = 'GA' AND credit_limit > 500.00);
What would happen if the inner query returned null?
No rows would be returned by the outer query.

Evaluate this SQL statement:


SELECT employee_id, last_name, salary
FROM employees
WHERE department_id IN
(SELECT department_id
FROM employees
WHERE salary > 30000 AND salary < 50000); 
Which values will be displayed?
All employees who work in a department with employees who earn more than $30,000, but less than $50,000.

Evaluate this SELECT statement: 


SELECT student_id, last_name, first_name FROM student WHERE major_id NOT IN (SELECT major_id  FROM
majors  WHERE department_head_id = 30 AND title = 'ADJUNCT'); 
What would happen if the inner query returned a NULL value row? 
No rows would be returned from the STUDENT table.

Which of the following statements contains a comparison operator that is used to restrict rows based on a list of
values returned from an inner query?
All of the above.

A multiple-row operator expects how many values?


One or more

What would happen if you attempted to use a single-row operator with a multiple-row subquery?
An error would be returned.

Which operator or keyword cannot be used with a multiple-row subquery? 


=

You need to display all the products that cost more than the maximum cost of every product produced in Japan.
Which multiple-row comparison operator could you use? 
>ANY

Evaluate the structure of the EMPLOYEE and DEPART_HIST tables:


EMPLOYEE:
EMPLOYEE_ID NUMBER(9)
LAST_NAME VARCHAR2(25)
FIRST_NAME VARCHAR2(25)
DEPARTMENT_ID NUMBER(9)
MANAGER_ID NUMBER(9)
SALARY NUMBER(7,2)

DEPART_HIST:
EMPLOYEE_ID NUMBER(9)
OLD_DEPT_ID NUMBER(9)
NEW_DEPT_ID NUMBER(9)
CHANGE_DATE DATE
You want to generate a list of employees who are in department 10, but used to be in department 15.
Which query should you use?
SELECT employee_id, last_name, first_name, department_id
FROM employee
WHERE (employee_id, department_id) IN
(SELECT employee_id, new_dept_id
 FROM depart_hist
 WHERE old_dept_id = 15) AND new_dept_id = 10;

The PRODUCTS table contains these columns:


PRODUCT_ID NUMBER NOT NULL
PRODUCT_NAME VARCHAR2 (25)
SUPPLIER_ID NUMBER NOT NULL
LIST_PRICE NUMBER (7,2)
COST NUMBER (5,2)
QTY_IN_STOCK NUMBER(4)
LAST_ORDER_DT DATE NOT NULL DEFAULT SYSDATE
Which INSERT statement will execute successfully?
INSERT INTO products VALUES (2958, 'Cable', 8690, 7.09, 4.04, 700);

The PRODUCTS table contains these columns:


PROD_ID NUMBER(4)
PROD_NAME VARCHAR2(25)
PROD_PRICE NUMBER(3)
You want to add the following row data to the PRODUCTS table:
(1) a NULL value in the PROD_ID column
(2) "6-foot nylon leash" in the PROD_NAME column
(3) "10" in the PROD_PRICE column
You issue this statement:
INSERT INTO products
VALUES (null,'6-foot nylon leash', 10);
What row data did you add to the table?
The row was created with the correct data in all three columns.

You have been instructed to add a new customer to the CUSTOMERS table. Because the new customer has not
had a credit check, you should not add an amount to the CREDIT column.
The CUSTOMERS table contains these columns:
CUST_ID NUMBER(10)
COMPANY VARCHAR2(30)
CREDIT NUMBER(10)
POC VARCHAR2(30)
LOCATION VARCHAR2(30)
Which two INSERT statements will accomplish your objective?
INSERT INTO customers (cust_id, company, poc, location)
VALUES (200, 'InterCargo', 'tflanders', 'samerica');

INSERT INTO customers


VALUES (200, 'InterCargo', null, 'tflanders', 'samerica');

Which statement about the VALUES clause of an INSERT statement is true?


If no column list is specified, then the values must be in the order the columns are specified in the table.

You need to update the area code of employees that live in Atlanta . Evaluate this partial UPDATE statement:
UPDATE employee
SET area_code = 770
Which of the following should you include in your UPDATE statement to achieve the desired results?
WHERE city = 'Atlanta';
What would happen if you issued a DELETE statement without a WHERE clause?
All the rows in the table would be deleted.

You need to delete a record in the EMPLOYEES table for Tim Jones, whose unique employee identification
number is 348. The EMPLOYEES table contains these columns:
EMPLOYEE_ID NUMBER(5) PRIMARY KEY
LAST_NAME VARCHAR2(20)
FIRST_NAME VARCHAR2(20)
ADDRESS VARCHAR2(30)
PHONE NUMBER(10)
Which DELETE statement will delete the appropriate record without deleting any additional records?
DELETE FROM employees WHERE employee_id = 348;

Which two commands can be used to modify existing data in a database row?
MERGE
UPDATE

When the WHERE clause is missing in a DELETE statement, what is the result?
All rows are deleted from the table.

Which of the following represents the correct syntax for an INSERT statement?
INSERT INTO customers VALUES (3178, 'J.', 'Smith', '123 Main Street', 'Nashville', 'TN', '37777');

The EMPLOYEES table contains the following columns:


EMPLOYEE_ID NUMBER(10) PRIMARY KEY
LAST_NAME VARCHAR2(20)
FIRST_NAME VARCHAR2(20)
DEPARTMENT_ID NUMBER(10)
HIRE_DATE DATE
SALARY NUMBER(9,2)
BONUS NUMBER(9,2)
You want to execute one DML statement to change the salary of all employees in department 10 to equal the new
salary of employee id 89898. Currently, all employees in department 10 have the same salary value. Which
statement should you execute?
UPDATE employees
SET salary = (SELECT salary FROM employees WHERE employee_id = 89898)
WHERE department_id = 10;

You want to enter a new record into the CUSTOMERS table. Which two commands can be used to create new
rows?
INSERT, MERGE

Examine the structures of the PLAYERS, MANAGERS, and TEAMS tables:


PLAYERS
PLAYER_ID NUMBER Primary Key
LAST_NAME VARCHAR2 (30)
FIRST_NAME VARCHAR2 (25)
TEAM_ID NUMBER
MGR_ID NUMBER
SIGNING_BONUS NUMBER(9,2)
SALARY NUMBER(9,2)

MANAGERS
MANAGER_ID NUMBER Primary Key
LAST_NAME VARCHAR2 (20)
FIRST_NAME VARCHAR2 (20)
TEAM_ID NUMBER
TEAMS
TEAM_ID NUMBER Primary Key
TEAM_NAME VARCHAR2 (20)
OWNER_LAST_NAME VARCHAR2 (20)
OWNER_FIRST_NAME VARCHAR2 (20)
Which situation would require a subquery to return the desired result?
To display the names of the managers for all the teams owned by a given owner 

Evaluate this statement: DELETE FROM customer; Which statement is true? 


The statement deletes all the rows from the CUSTOMER table.

You might also like