Defining a schema in SAS/ACCESS® Interface to Oracle


When you use SAS/ACCESS Interface to Oracle to connect to the Oracle database, the SAS® System looks for tables that are owned or created by the user ID that is listed in the LIBNAME statement. If the software does not find any tables associated with that user ID, the SAS log still shows that the library was assigned successfully, as shown in the following example output:

libname mylib oracle user=user-id password=password path=path; 
NOTE: Libref MYLIB was successfully assigned as follows:
Engine: ORACLE

However, no tables appear in the library in the SAS Explorer window, as shown here:

The library does not show any tables because there are no tables owned or created by the user ID from the LIBNAME statement. Therefore, you need to define a schema in the LIBNAME statement. A schema is the owner or creator of tables. To see tables that are owned or created by a different user, you must use the SCHEMA=schema-name option in the LIBNAME statement.

To determine the schema for your tables, follow these steps:

  1. Submit the following code using your Oracle user ID, password, and database path:
    proc sql;
    connect to oracle(user=user-id password=password path=database-path); create table work.oraSchema as
    select * from connection to oracle
    (select owner, table_name from all_tables order by owner);
    quit;
  2. After you run the code, open the created table to see the schema and table names:

  3. Scroll through the Work.Oraschema table to find the owner name for the table that you want to see.
  4. Use the owner name for that table as the value in the SCHEMA= option in your LIBNAME statement. For example, if you want to see the CLASS table, you must use SCHEMA=SCOTT in the LIBNAME statement, as shown here:
    libname mylib oracle user=user-id password=password path=path schema=scott;

When you submit the LIBNAME statement in this example, the tables with a schema value of SCOTT appear in the Explorer window.