Post by Ira BaxterHi. We are working on tools to process PL/SQL code.
What we need are precise details on the full PL/SQL syntax.
We have the Oracle 9/10 documentation, but it seems
a little fuzzy on the details. As an example, we're unclear
on whether ANSI 99 JOIN syntax is allowed or not.
(Any direct answers on this topic would be appreciated).
Is there a document which precisely defines the PL/SQL
syntax?
With all due respect,
One could get the impression you are unclear about PL/SQL in general.
Your comment about the ANSI 99 Join syntax indicates that you do not
separate PL/SQL from SQL and therefore may not realize that PL/SQL does
perform any joins at all. Instead, it passes such requests to the SQL
processor, the syntax for which is documented in the SQL Reference
Manual.
I also hope you realize that the combination of SQL and PL/SQL allows a
developer to 'extend' SQL by adding new functions that can be used in
various places, extending the the SELECT clause, the inline view,
the WITH clause, the WHERE clause, etc. You may find this a challenge in
creating your tools as it implies you may need to catalog all stored
functions as well.
The actual PL/SQL language is documented fairly well in the "PL/SQL User's
Guide and Reference", which includes use, discussion of the above
concept, syntax and examples. Please indicate what is 'fuzzy' about
details such as the following syntax definition (from the manual) for the
CASE statement:
searched_case_statement ::=
[ <<label_name>> ]
CASE { WHEN boolean_expression THEN {statement;} ... }...
[ ELSE {statement;}... ]
END CASE [ label_name ];
And yes, ANSI 99 Join syntax is allowed - in the SQL language.
BTW - if your tool is intended to generate PL/SQL, I strongly encourage
reading and understanding "Effective Oracle By Design" as well as anything
else identified at http://www.oaktable.org
/Hans
Just a lowly BScEE
<rant>
By the way, cross-posting is not necessary. comp.databases.oracle is an
obsolete newsgroup, comp.databases.oracle.marketplace is for
advertising, comp.databases.oracle.tools is for Oracle tools. Pick one
and stick with it.
I cross-posted the reply so you get the response, but on behalf of [many
in] the community, I would appreciate you restricting the rest to
comp.databases.oracle.tools)
</rant>