UPDATE Statement

Updates a SAS/ACCESS descriptor file.
Type: Optional statement
Applies to: access descriptor or view descriptor

Syntax

UPDATE libref.member-name.ACCESS|VIEW
<password-level=SAS-password> ;

Details

The UPDATE statement identifies an existing access descriptor or view descriptor that you want to update. The descriptor can exist in either a temporary (WORK) or permanent SAS library. If the descriptor has been protected with a SAS password that prohibits editing of the ACCESS or VIEW descriptor, then the password must be specified in the UPDATE statement.
Note: It is recommended that you recreate (or overwrite) your descriptors rather than update them. SAS does not validate updated descriptors. If you create an error while updating a descriptor, you will not know of it until you use the descriptor in a SAS procedure such as PROC PRINT.
To update a descriptor, use its three-level name. The first level identifies the libref of the SAS library where you stored the descriptor. The second level is the descriptor's name (member name). The third level is the type of SAS file: ACCESS or VIEW.
You can use the UPDATE statement as many times as necessary in one procedure execution. That is, you can update multiple access descriptors, as well as one or more view descriptors based on these access descriptors, within the same execution of the ACCESS procedure. Or, you can update access descriptors and view descriptors in separate executions of the procedure.
You can use the CREATE statement and the UPDATE statement in the same procedure execution.
If you update only one descriptor in a procedure execution, the UPDATE and its accompanying statements are checked for errors when you submit the procedure for processing. If you update multiple descriptors in the same procedure execution, each UPDATE statement (and its accompanying statements) is checked for errors as it is processed. In either case, the UPDATE statement must be the first statement after the PROC ACCESS statement.
Note: The ACCDESC= parameter cannot be specified in the PROC ACCESS statement).
When the RUN statement is processed, all descriptors are saved. If errors are found, error messages are written to the SAS log, and processing is terminated. After you correct the errors, resubmit your statements.
The following statements are not supported when using the UPDATE statement: ASSIGN, RESET, SECURITY, SELECT, and MVF subcommands RESET and SELECT.
Note: You cannot create a view descriptor after you have updated a view descriptor in the same procedure execution. You can create a view descriptor after updating or creating an access descriptor or after creating a view descriptor.
The following example updates the access descriptor MYLIB.ORDER on the ADABAS file ORDER. In this example, the column names are changed and formats are added.
  
proc access dbms=adabas;
     update mylib.order.access;
     rename ordernum ord_num
            fabriccharges fabrics;
     format firstorderdate date7.;
     informat firstorderdate date7.;
     content firstorderdate yymmdd6.;
run;
The following example updates an access descriptor ADLIB.EMPLOY on the ADABAS file EMPLOYEE and then recreates a view descriptor VLIB.EMP1204, which was based on ADLIB.EMPLOY. The original access descriptor included all of the columns in the file. Here, the salary and birthdate columns are dropped from the access descriptor so that users cannot see this data. Because RESET is not supported when UPDATE is used, the view descriptor VLIB.EMP1204 must be recreated in order to omit the salary and birthdate columns.
  proc access dbms=adabas;
     /* update access descriptor  */
     update adlib.employ.access;
     drop salary birthdate;
     list all;

     /* re-create view descriptor */
     create vlib.emp1204.view;
     select empid hiredate dept jobcode sex
            lastname firstname middlename phone;
     format empid 6.
            hiredate date7.;
     subset where jobcode=1204;
  run;
The following example updates a view descriptor VLIB.BDAYS from the ADLIB.EMPLOY access descriptor, which was created in a separate procedure execution. In this example, the WHERE clause replaces the WHERE clause that was specified in the original view descriptor.
  proc access dbms=adabas
     update vlib.bdays.view;
     subset;
     subset where empid GT 212916;
  run;