To confuse things somewhat, PL/SQL actually has a SQL parser; hence, PL/SQL can verify SQL statements during parse without actually talking to the database. This has some interesting side effects in version 8, where the SQL parser inside PL/SQL tend to not have adopted all the latest SQL features, i.e. there is valid SQL (in e.g. 8.1.7), that you cannot use in PL/SQL without using dynamic SQL (either DBMS_SQL or native dynamic SQL).
/Bjørn.
sam d wrote:
Hi List, I was going thru Oracle "PL/SQL User's Guide and Reference". http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/appdev.920/a96624/01_oview.htm#962Paragraphs below (near the "Figure 1-4 PL/SQL Engine" in the doc) confused me little. para1 --- "These two environments are independent. PL/SQL is bundled with the Oracle server but might be unavailable in some tools. In either environment, the PL/SQL engine accepts as input any valid PL/SQL block or subprogram. Figure 1-4 shows the PL/SQL engine processing an anonymous block. The engine executes procedural statements but sends SQL statements to the SQL Statement Executor in the Oracle server." para2-- "In the Oracle Database Server: Application development tools that lack a local PL/SQL engine must rely on Oracle to process PL/SQL blocks and subprograms. When it contains the PL/SQL engine, an Oracle server can process PL/SQL blocks and subprograms as well as single SQL statements. The Oracle server passes the blocks and subprograms to its local PL/SQL engine." Now my doubt is: 1.In para1 - Does pl/sql engine only processes the procedural statements and always passes SQL statements to SQL Statement Executor ? 2.In para2 sentence "When it contains ..." says Oracle pl/sql engine can process SQL statements. Statements in both paragraphs seems ambiguous. Pls shade some light. Thanks Sam __________________________________________________ Do you Yahoo!? Yahoo! Platinum - Watch CBS' NCAA March Madness, live on your desktop! http://platinum.yahoo.com
