Expert

13-18.

Suppose you want to pass the same value repeatedly in a dynamic SQL statement. Here is an example of such a string:

sql_stmt := 'INSERT INTO old_growth VALUES (:x, :x, :y, :x)';

Which of the following EXECUTE IMMEDIATE statements correctly handle this situation?

EXECUTE IMMEDIATE sql_stmt USING a, a, b, a;
EXECUTE IMMEDIATE sql_stmt USING a, b;

13-19.

Write a function that returns the value stored in the data element specified by name. In other words, if you have a variable last_date in the profits package, your function retrieves its value as follows:

got_it := value_in ('profits.last_date');

13-20.

Why won’t the following use of the value_in function (see 13-19) work?

DECLARE
   n NUMBER := 100;
BEGIN
   IF value_in ('n') = 100
   THEN

13-21.

Suppose that you want to pass the same value repeatedly in a dynamic PL/SQL statement. Here is an example of such a string:

sql_stmt := 'BEGIN show_min_compensation (:x, :x, :y, :x); END;';

Which of the following EXECUTE IMMEDIATE statements correctly handles the situation in 13-20?

EXECUTE IMMEDIATE sql_stmt USING a, a, b, a;
EXECUTE IMMEDIATE sql_stmt USING a, b;

13-22.

Suppose you want to pass a NULL value to a dynamic SQL statement through the USING clause. What happens when you try to execute the following statement?

BEGIN
   EXECUTE IMMEDIATE
      'UPDATE employee SET salary = :x
        WHERE fire_date IS NOT NULL' USING NULL;
END;

13-23.

How can you transform the following statement so that you can pass a NULL value for the salary?

BEGIN EXECUTE IMMEDIATE 'UPDATE ...

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.