Intermediate

16-22.

What happens when the following trigger executes?

CREATE OR REPLACE TRIGGER employee_ins_t1
   BEFORE UPDATE
   ON employee
   FOR EACH ROW
DECLARE
   cur    PLS_INTEGER    := DBMS_SQL.open_cursor;
   fdbk   PLS_INTEGER;
   stmt   VARCHAR2(2000);
BEGIN
   stmt := 'BEGIN IF :old.' ||
           emp_pkg.col_name ||
           '= ' ||
           emp_pkg.col_value ||
           '''' ||
           ' THEN  :new.salary := :new.salary * 2; ' ||
           ' END IF;' ||
           ' END; ';
   DBMS_SQL.parse (cur, sql_stmt, DBMS_SQL.native);
   fdbk := DBMS_SQL.execute (cur);
END;

16-23.

Provide a template for a trigger that raises an error when a client application violates a business rule (e.g., a trigger that raises an error if a user attempts to delete a row from the employee table).

16-24.

You want to issue DML statements or execute PL/SQL stored programs inside a trigger. Which of the following describes how you must grant the necessary privileges on the underlying object?

  1. Privileges on the underlying object must be granted through the database roles.

  2. Privileges on the underlying object must be granted directly to the user who owns the object.

  3. Privileges can be granted either through database roles or directly from the user who owns the object.

16-25.

Indicate whether the following triggers are valid or invalid (a valid procedure both compiles and executes without error):

  1. CREATE OR REPLACE TRIGGER emp_audit_trg BEFORE INSERT OR UPDATE ON employee FOR EACH ROW BEGIN IF (inserting) THEN INSERT INTO employee_audit VALUES (:new.empno, USER, 'Inserting a row into table_a'); ELSE INSERT INTO ...

Get Oracle PL/SQL Programming: A Developer's Workbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.