Precompilers and the Unified SQL Parser
(Doc ID 283146.1)
Last updated on DECEMBER 25, 2019
Applies to:Precompilers - Version 126.96.36.199 and later
Information in this document applies to any platform.
***Checked for relevance on 28th Feb 2018***
To explain why the Oracle precompilers are unable to parse certain newer SQL and PL/SQL constructs and how to resolve this.
With Oracle9i, the database introduced the unified SQL parser so the same parser is used for compiling SQL statements in both standalone SQL and PL/SQL. The unified parser is compliant with the SQL99 standard and has been enhanced with each Oracle release to comply with the latest SQL standards. However the Oracle Precompilers had no support for the unified parser, and thus SQL99 or later syntax, until it was introduced as an option (in Pro*C and Pro*COBOL) from Oracle11g. Without this option available and enabled, syntactic checking uses an old version of the SQL and PL/SQL parsers, meaning any static statements are limited to largely Oracle8 and some Oracle8i syntax only.
As result of this limitation, if a precompiler program contains static SQL statements that use SQL99 or later syntax, it will fail during the precompilation stage with an error like (Pro*C):
Prior to Oracle11g, or when using Pro*Fortran, the only solution is to use dynamic SQL so the problem statement does not get parsed during the precompilation stage, only by the database at runtime.
To view full details, sign in with your My Oracle Support account.
Don't have a My Oracle Support account? Click to get started!
In this Document