Expert

21-43.

Which of the following actions cannot be performed with DBMS_SQL in a stored procedure:

  1. Create a table by selecting rows from another existing table.

  2. Set a role by executing the ALTER SESSION SET ROLE DDL statement.

  3. Create a new user.

  4. Set the value of a column to NULL for all rows.

  5. Declare a cursor variable based on a REF CURSOR type and retrieve that variable’s value.

  6. Truncate a table.

  7. Connect to another database session with the CONNECT statement.

21-44.

Write a program that accepts the name of a global variable defined in a package specification and a value, and assigns that value to the variable.

21-45.

Now that you’ve built a dynamic assignment program, let’s use it to modify the value of a local variable. In the following block, for example, You want to fill up a PL/SQL table with a variety of strings:

DECLARE
   TYPE str_t IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER;
   greetings str_t;
BEGIN
   FOR yearnum IN 1 .. 10
   LOOP
      assign (
         ' Welcome to Year ' || TO_CHAR (yearnum),
         'greetings(' || TO_CHAR(yearnum) || ')');
   END LOOP;
END;

But when you run this code, you get the following error:

PLS-00201: identifier 'GREETINGS' must be declared

Why can’t it recognize the greetings table, even though it is declared right in the block?

21-46.

Rewrite the assign procedure provided in the assign.sp file on the book’s web page so that you can modify the value of a local date variable.

21-47.

What ...

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.