Release 10.1A: OpenEdge Development:
Progress 4GL Reference

> ## SAVE CACHE statement

> Saves the schema cache of a database to an operating system file. Subsequent sessions can then share the same cache by using the Schema Cache File (`-cache`) parameter.

> #### Syntax

>     SAVE CACHE
>         { CURRENT | COMPLETE }
>         { database-name | VALUE ( char-expr ) }
>       TO
>         { pathname |  VALUE ( char-expr )}
>     [ NO-ERROR ]

> `CURRENT`

> Specifies that only the portion of the schema cache that applies to referenced tables is saved to the file. By using this option you can tailor a small schema cache file for an application that does not use all the tables in the database.

> `COMPLETE`

> Specifies that the complete schema cache for the database is saved to the file. If you use this option, the client process builds a complete schema cache in memory including template records and all trigger information for every table in the database.

> ``database-name``

> Specifies the literal logical name of a currently connected OpenEdge database.

> ``pathname``

> Specifies the literal pathname of an operating system file to hold the schema cache.

> `VALUE (`char-expr`)`

> Returns the corresponding literal database name or pathname specified by the character expression in `char-expr`.

> `NO-ERROR`

> Specifies that any errors that occur in the attempt to save the schema cache file are suppressed. After the SAVE CACHE statement completes, you can check the ERROR-STATUS system handle for information on any errors that occurred.

> Example

> This procedure saves the complete schema cache for each database that you specify in the current working directory, and displays any error messages associated with connecting or saving the cache:

> r-schcsh.p
>     DEFINE VARIABLE db-name AS CHARACTER FORMAT "x(12)" INITIAL ?.
>     DEFINE VARIABLE icnt AS INTEGER.

>     DO WHILE db-name <> "":
>         SET db-name LABEL "Database Name"
>             WITH FRAME A SIDE-LABELS TITLE "Save Cache" VIEW-AS DIALOG-BOX.
>         IF db-name <> "" THEN
>             CONNECT VALUE(db-name) -1 NO-ERROR.
>         ELSE
>             LEAVE.
>         IF NOT ERROR-STATUS:ERROR THEN DO:
>             SAVE CACHE COMPLETE VALUE(db-name) to VALUE(db-name + ".csh")
>                 NO-ERROR.
>             IF NOT ERROR-STATUS:ERROR THEN
>                 MESSAGE "Saved schema cache for"
>                         db-name "in" db-name + ".csh.".
>             ELSE DO:
>                 BELL.
>                 DO icnt = 1 TO ERROR-STATUS:NUM-MESSAGES:
>                     MESSAGE ERROR-STATUS:GET-MESSAGE(icnt)
>                         VIEW-AS ALERT-BOX.
>                 END.
>             END.
>         END.
>         ELSE DO:
>             BELL.
>             DO icnt = 1 TO ERROR-STATUS:NUM-MESSAGES:
>                 MESSAGE ERROR-STATUS:GET-MESSAGE(icnt)
>                     VIEW-AS ALERT-BOX.
>             END.
>         END.
>         DISCONNECT VALUE(db-name) NO-ERROR.
>     END.

> #### Notes

> - The schema cache is saved to the file in a binary format that is portable across machines.

> - For information on using an existing schema cache file, see OpenEdge Data Management: Database Administration . For information on the Schema Cache File (-cache) startup parameter, see OpenEdge Deployment: Startup Command and Parameter Reference .

> - Any schema changes to the database make the saved cache invalid. If the schema cache file is invalid when Progress tries to access it, Progress displays a warning message, ignores the file, and reads the required schema cache from the database.

> - To set up your database environment to use the CURRENT option, you only have to connect to the database and read from the tables that compose the schema you want to save. This is sufficient for the SAVE CACHE statement to save all parts of each table in the schema, including template records and trigger information. If you want to save a different subschema of the database, you must disconnect and then reconnect to the database before reading the tables for that subschema.

> - For a DataServer, Progress saves the schema cache for the entire schema holder database. You cannot save the schema cache for a non-OpenEdge database separately. For more information on schema cache files for DataServers, see the OpenEdge DataServer Guides, OpenEdge Data Management: DataServer for Microsoft SQL Server , OpenEdge Data Management: DataServer for ODBC , and OpenEdge Data Management: DataServer for ORACLE .

> #### See also

> CONNECT statement, ERROR-STATUS system handle

Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095