Re: Looking for authoritative reference on PL/SQL grammar

From: GreyBeard <Fuzzy.GreyBeard_at_gmail.com>
Date: Fri, 31 Dec 2004 16:56:52 GMT
Message-Id: <pan.2004.12.31.16.56.16.238177_at_gmail.com>


On Fri, 31 Dec 2004 09:51:32 -0600, Ira Baxter wrote:

> Hi. 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> Received on Fri Dec 31 2004 - 17:56:52 CET

Original text of this message