11g New Features for PL/SQL Developers Tim Hall Oracle ACE Director Oracle ACE of the Year 2006 OCP DBA (7, 8, 8i, 9i, 10g,

Slides:



Advertisements
Similar presentations
Chapter 8 Advanced SQL Pearson Education © Chapter 8 - Objectives u How to use the SQL programming language u How to use SQL cursors u How to create.
Advertisements

Oracle PL/SQL IV Exceptions Packages.
AN INTRODUCTION TO PL/SQL Mehdi Azarmi 1. Introduction PL/SQL is Oracle's procedural language extension to SQL, the non-procedural relational database.
Copyright © 200\8 Quest Software High Performance PL/SQL Guy Harrison Chief Architect, Database Solutions.
Lecture-5 Though SQL is the natural language of the DBA, it suffers from various inherent disadvantages, when used as a conventional programming language.
Advanced Package Concepts. 2 home back first prev next last What Will I Learn? Write packages that use the overloading feature Write packages that use.
A Guide to Oracle9i1 Advanced SQL And PL/SQL Topics Chapter 9.
Bordoloi and Bock PROCEDURES, FUNCTIONS & TRIGGERS.
PL/SQL Bulk Collections in Oracle 9i and 10g Kent Crotty Burleson Consulting October 13, 2006.
ORACLE ONLINE TRAINING Contact our Support Team : SOFTNSOL India: Skype id : softnsoltrainings id:
SQL Within PL / SQL Chapter 4. 2 SQL Within PL / SQL SQL Statements DML in PL / SQL Pseudocolums Transaction Control.
Bordoloi and Bock CURSORS. Bordoloi and Bock CURSOR MANIPULATION To process an SQL statement, ORACLE needs to create an area of memory known as the context.
PL / SQL P rocedural L anguage / S tructured Q uery L anguage Chapter 7 in Lab Reference.
Cursor and Exception Handling By Nidhi Bhatnagar.
Chapter 6 Additional Database Objects
Oracle PL/SQL Programming Steven Feuerstein All About the (Amazing) Function Result Cache of Oracle Database 11g.
Lecture 4 PL/SQL language. PL/SQL – procedural SQL Allows combining procedural and SQL code PL/SQL code is compiled, including SQL commands PL/SQL code.
SAGE Computing Services Customised Oracle Training Workshops and Consulting 11g New Features … of the SQL & PL/SQL Variety Scott Wesley Systems Consultant.
PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming Chapter 7 PL/SQL Packages.
From Zero to Hero : Using an assortment of caching techniques to improve performance of SQL containing PL/SQL calls. Tim Hall.
Chapter 6 Additional Database Objects Oracle 10g: SQL.
PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming Chapter 6 Functions.
PL/SQLPL/SQL Oracle11g : PL/SQL Programming Chapter 6 Functions.
Overview · What is PL/SQL · Advantages of PL/SQL · Basic Structure of a PL/SQL Block · Procedure · Function · Anonymous Block · Types of Block · Declaring.
Using Procedures & Functions Oracle Database PL/SQL 10g Programming Chapter 9.
CpSc 462/662: Database Management Systems (DBMS) (TEXNH Approach) Stored Procedure James Wang.
PRACTICE OVERVIEW PL/SQL Part Examine this package specification and body: Which statement about the V_TOTAL_BUDGET variable is true? A. It must.
PL / SQL By Mohammed Baihan. What is PL/SQL? PL/SQL stands for Procedural Language extension of SQL. PL/SQL is a combination of SQL along with the procedural.
Database Systems Design, Implementation, and Management Coronel | Morris 11e ©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or.
12 Copyright © 2004, Oracle. All rights reserved. Understanding and Influencing the PL/SQL Compiler.
CHAPTER 9 Views, Synonyms, and Sequences. Views are used extensively in reporting applications and also to present subsets of data to applications. Synonyms.
1 PL\SQL Dev Templates. 2 TEMPLATE DEFINITION Whenever you create a new program unit, its initial contents are based upon a template which contains pre-defined.
What is a Package? A package is an Oracle object, which holds other objects within it. Objects commonly held within a package are procedures, functions,
Chapter 9: Advanced SQL and PL/SQL Guide to Oracle 10g.
Dynamic SQL. 2 home back first prev next last What Will I Learn? Recall the stages through which all SQL statements pass Describe the reasons for using.
CREATING STORED PROCEDURES AND FUNCTIONS. Objectives After completing this lecture, you should be able to do the following: Differentiate between anonymous.
Static. 2 Objectives Introduce static keyword –examine syntax –describe common uses.
A Guide to SQL, Eighth Edition Chapter Eight SQL Functions and Procedures.
PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming Chapter 8 Program Unit Dependencies.
Using SQL in PL/SQL Oracle Database PL/SQL 10g Programming Chapter 4.
A procedure is a module performing one or more actions; it does not need to return any values. The syntax for creating a procedure is as follows: CREATE.
PRACTICE OVERVIEW PL/SQL Part Your stored procedure, GET_BUDGET, has a logic problem and must be modified. The script that contains the procedure.
Oracle10g Developer: PL/SQL Programming1 Objectives Named program units How to identify parameters The CREATE PROCEDURE statement Creating a procedure.
Text TCS INTERNAL Oracle PL/SQL – Introduction. TCS INTERNAL PL SQL Introduction PLSQL means Procedural Language extension of SQL. PLSQL is a database.
DML Statements contd.. SQL Server CURSORS Cursor is used in handling results of select query for data calculations Cursors are used as buffered.
Oracle9i Developer: PL/SQL Programming Chapter 5 Functions.
Chapter 8 Advanced SQL Pearson Education © Chapter 8 - Objectives How to use the SQL programming language How to use SQL cursors How to create stored.
1 11g NEW FEATURES ByVIJAY. 2 AGENDA  RESULT CACHE  INVISIBLE INDEXES  READ ONLY TABLES  DDL WAIT OPTION  ADDING COLUMN TO A TABLE WITH DEFAULT VALUE.
5 Copyright © 2007, Oracle. All rights reserved. Implementing the Performance Improvements.
Caching for PL/SQL Performance Tim Hall Oracle ACE Director Oracle ACE of the Year 2006 OCP DBA (7, 8, 8i, 9i, 10g, 11g) OCA.
CS422 Principles of Database Systems Stored Procedures and Triggers Chengyu Sun California State University, Los Angeles.
Oracle9i Developer: PL/SQL Programming Chapter 6 PL/SQL Packages.
Preface IIntroduction Course Objectives I-2 Oracle Complete Solution I-3 Course Agenda I-4 Tables Used in This Course I-5 The Order Entry Schema I-6 The.
1 Copyright © 2004, Oracle. All rights reserved. PL/SQL Programming Concepts: Review.
6 Copyright © 2009, Oracle. All rights reserved. Using Dynamic SQL.
Tim Hall Oracle ACE Director
Stored Procedures.
Chapter 8 Dependencies, Privileges and Compilation Oracle11g:
SQL Stored Triggers Presented by: Dr. Samir Tartir
UNIT - V STORED PROCEDURE.
Oracle 1Z0-148 Questions Answers VCE
PL/SQL Package Week 8.
PL/SQL Scripting in Oracle:
Handling Exceptions.
PRACTICE OVERVIEW PL/SQL Part - 2.
PRACTICE OVERVIEW PL/SQL Part - 1.
Chapter 8 Advanced SQL.
MATERI PL/SQL Procedures Functions Packages Database Triggers
Prof. Arfaoui. COM390 Chapter 6
Prof. Arfaoui. COM390 Chapter 7
Presentation transcript:

11g New Features for PL/SQL Developers Tim Hall Oracle ACE Director Oracle ACE of the Year 2006 OCP DBA (7, 8, 8i, 9i, 10g, 11g) OCA PL/SQL Developer Oracle PL/SQL Tuning (Rampant) Oracle Job Scheduling (Rampant)

Named and Mixed Notation in SQL Prior to 11g, PL/SQL invoked from SQL had to have its parameters passed using positional notationPrior to 11g, PL/SQL invoked from SQL had to have its parameters passed using positional notation This made it difficult to determine the meaning of parameters.This made it difficult to determine the meaning of parameters. Oracle 11g allows positional, named and mixed notation to be used when calling PL/SQL from SQL.Oracle 11g allows positional, named and mixed notation to be used when calling PL/SQL from SQL. -- Positional Notation. SELECT test_func(10, 20) FROM dual; -- Mixed Notation. SELECT test_func(10, p_value_2 => 20) FROM dual; -- Named Notation. SELECT test_func(p_value_1 => 10, p_value_2 => 20) FROM dual;

Sequences in PL/SQL Expressions The NEXTVAL and CURRVAL sequence pseudocolumns can now be accessed in PL/SQL expressions as well as queries.The NEXTVAL and CURRVAL sequence pseudocolumns can now be accessed in PL/SQL expressions as well as queries. This makes the code look simpler, and the documentation suggests it improves performance.This makes the code look simpler, and the documentation suggests it improves performance. SELECT test1_seq.NEXTVAL INTO l_value FROM dual; l_value := test1_seq.NEXTVAL; SELECT test1_seq.CURRVAL INTO l_value FROM dual; l_value := test1_seq.CURRVAL;

SIMPLE_INTEGER SIMPLE_INTEGER is a new subtype of PLS_INTEGER.SIMPLE_INTEGER is a new subtype of PLS_INTEGER. It shows only marginal performance improvements in interpreted code, but shows considerable improvements in natively compiled code.It shows only marginal performance improvements in interpreted code, but shows considerable improvements in natively compiled code. DemoDemoDemo Improved performance over PLS_INTEGER because:Improved performance over PLS_INTEGER because: –It wraps round (-2,147,483,648 to 2,147,483,647), rather than doing a bounds check. –It cannot be declared as or set to NULL.

CONTINUE statement The CONTINUE statement jumps out of the current loop interation and starts the next one.The CONTINUE statement jumps out of the current loop interation and starts the next one. It can be used on its own, or as part of a CONTINUE WHEN statement, as shown below.It can be used on its own, or as part of a CONTINUE WHEN statement, as shown below. FOR i IN LOOP IF MOD(i,2) = 0 THEN IF MOD(i,2) = 0 THEN CONTINUE; CONTINUE; END IF; END IF; -- Do something here! -- Do something here! END LOOP; FOR i IN LOOP CONTINUE WHEN MOD(i,2) = 0; CONTINUE WHEN MOD(i,2) = 0; -- Do something here! -- Do something here! END LOOP;

Dynamic SQL Enhancements Native dynamic SQL and the DBMS_SQL package now support dynamic SQL statements larger than 32 KB.Native dynamic SQL and the DBMS_SQL package now support dynamic SQL statements larger than 32 KB. The EXECUTE IMMEDIATE statement, OPEN-FOR statement and DBMS_SQL.PARSE procedure all accept SQL statements in the form of CLOBs.The EXECUTE IMMEDIATE statement, OPEN-FOR statement and DBMS_SQL.PARSE procedure all accept SQL statements in the form of CLOBs. DBMS_SQL.TO_REFCURSOR function converts a DBMS_SQL cursor ID into a REF CURSOR.DBMS_SQL.TO_REFCURSOR function converts a DBMS_SQL cursor ID into a REF CURSOR. DBMS_SQL.TO_CURSOR_NUMBER function converts a REF CURSOR into a DBMS_SQL cursor ID.DBMS_SQL.TO_CURSOR_NUMBER function converts a REF CURSOR into a DBMS_SQL cursor ID. The DBMS_SQL package now supports all datatypes supported by native dynamic SQL.The DBMS_SQL package now supports all datatypes supported by native dynamic SQL.

Generalized Invocation Generalized invocation allows a subtype to invoke a method of a parent type (supertype) using: (SELF AS supertype_name).method_nameGeneralized invocation allows a subtype to invoke a method of a parent type (supertype) using: (SELF AS supertype_name).method_name A type can invoke the member functions of any parent type in this way, regardless of the depth of the inheritance.A type can invoke the member functions of any parent type in this way, regardless of the depth of the inheritance. CREATE OR REPLACE TYPE child_type UNDER parent_type ( short_desc VARCHAR2(10), short_desc VARCHAR2(10), OVERRIDING MEMBER FUNCTION show_attributes RETURN VARCHAR2); OVERRIDING MEMBER FUNCTION show_attributes RETURN VARCHAR2);/ CREATE OR REPLACE TYPE BODY child_type AS OVERRIDING MEMBER FUNCTION show_attributes RETURN VARCHAR2 IS OVERRIDING MEMBER FUNCTION show_attributes RETURN VARCHAR2 IS BEGIN BEGIN RETURN (self AS parent_type).show_attributes || RETURN (self AS parent_type).show_attributes || ' short_desc=' || short_desc; ' short_desc=' || short_desc; END; END;END;/

Automatic Subprogram Inlining Every call to a procedure or function causes a slight performance overhead, which is especially noticeable when the subprogram is called within a loop.Every call to a procedure or function causes a slight performance overhead, which is especially noticeable when the subprogram is called within a loop. Automatic subprogram inlining replaces procedure calls with a copy of the code at compile time.Automatic subprogram inlining replaces procedure calls with a copy of the code at compile time. PLSQL_OPTIMIZE_LEVEL=2 : “PRAGMA INLINE (func, 'YES')” is used to indicate code to be inlined or not.PLSQL_OPTIMIZE_LEVEL=2 : “PRAGMA INLINE (func, 'YES')” is used to indicate code to be inlined or not. PLSQL_OPTIMIZE_LEVEL=3 : “PRAGMA INLINE (func, ‘NO')” indicates that code should not be inlined.PLSQL_OPTIMIZE_LEVEL=3 : “PRAGMA INLINE (func, ‘NO')” indicates that code should not be inlined. DemoDemoDemo The compiler inlines subprograms early in the optimization process, which may preventing later, more powerful optimizations taking place.The compiler inlines subprograms early in the optimization process, which may preventing later, more powerful optimizations taking place. FOR i IN 1.. l_loops LOOP PRAGMA INLINE (add_numbers, 'YES'); PRAGMA INLINE (add_numbers, 'YES'); l_return := add_numbers(l_num, i); l_return := add_numbers(l_num, i); END LOOP;

PL/Scope PL/Scope is a tool that gathers information about user defined identifiers at compile time and stores it in the SYSAUX tablespace.PL/Scope is a tool that gathers information about user defined identifiers at compile time and stores it in the SYSAUX tablespace. Controlled by the PLSCOPE_SETTINGS parameter. Default "IDENTIFIERS:NONE". Enable collection "IDENTIFIERS:ALL“.Controlled by the PLSCOPE_SETTINGS parameter. Default "IDENTIFIERS:NONE". Enable collection "IDENTIFIERS:ALL“. The PL/Scope data is available from the %_IDENTIFIERS views.The PL/Scope data is available from the %_IDENTIFIERS views. NAME TYPE USAGE TEST_PLSCOPE PROCEDURE DECLARATION TEST_PLSCOPE PROCEDURE DECLARATION TEST_PLSCOPE PROCEDURE DEFINITION TEST_PLSCOPE PROCEDURE DEFINITION P_IN FORMAL IN DECLARATION P_IN FORMAL IN DECLARATION L_VAR VARIABLE DECLARATION L_VAR VARIABLE DECLARATION L_VAR VARIABLE ASSIGNMENT L_VAR VARIABLE ASSIGNMENT P_IN FORMAL IN REFERENCE P_IN FORMAL IN REFERENCE L_VAR VARIABLE ASSIGNMENT L_VAR VARIABLE ASSIGNMENT L_VAR VARIABLE REFERENCE L_VAR VARIABLE REFERENCE ALTER SESSION SET PLSCOPE_SETTINGS='IDENTIFIERS:ALL'; ALTER PROCEDURE test_plscope COMPILE;

PL/SQL Hierarchical Profiler The hierarchical profiler includes the DBMS_HPROF package and the “plshprof” command line utility.The hierarchical profiler includes the DBMS_HPROF package and the “plshprof” command line utility. The DBMS_HPROF package needs a directory object with read/write privilege and optionally access to some profiler tables (?/rdbms/admin/dbmshptab.sql).The DBMS_HPROF package needs a directory object with read/write privilege and optionally access to some profiler tables (?/rdbms/admin/dbmshptab.sql). The DBMS_HPROF package profiles and analyzes the data.The DBMS_HPROF package profiles and analyzes the data. The analysis can be queried from the DBMSHP_% tables.The analysis can be queried from the DBMSHP_% tables. The “plushprof utility” converts the raw data to several HTML reports.The “plushprof utility” converts the raw data to several HTML reports. BEGIN DBMS_HPROF.start_profiling ('PROFILER_DIR', 'profiler.txt'); DBMS_HPROF.start_profiling ('PROFILER_DIR', 'profiler.txt'); procedure_1(p_times => 10); procedure_1(p_times => 10); DBMS_HPROF.stop_profiling; DBMS_HPROF.stop_profiling;END;/ NAME FUNCTION FUNCTION_ELAPSED_TIME CALLS TEST.PROCEDURE_2 PROCEDURE_ TEST.PROCEDURE_2 PROCEDURE_ TEST.PROCEDURE_3 PROCEDURE_ TEST.PROCEDURE_3 PROCEDURE_ TEST.PROCEDURE_3 __static_sql_exec_line TEST.PROCEDURE_3 __static_sql_exec_line

PL/SQL Native Compiler Enhancements In previous version, PL/SQL was converted to C code, then compiled, which required a C compiler.In previous version, PL/SQL was converted to C code, then compiled, which required a C compiler. Oracle 11g compiles PL/SQL directly to native code with no need for an additional C compiler.Oracle 11g compiles PL/SQL directly to native code with no need for an additional C compiler. Setting the PLSQL_CODE_TYPE to NATIVE, rather than the default of INTERPRETED, code is compiled directly to machine code and stored in the SYSTEM tablespace.Setting the PLSQL_CODE_TYPE to NATIVE, rather than the default of INTERPRETED, code is compiled directly to machine code and stored in the SYSTEM tablespace. Once called, the code is loaded into shared memory, making it accessible for all sessions in that instance.Once called, the code is loaded into shared memory, making it accessible for all sessions in that instance. The %_PLSQL_OBJECT_SETTINGS views include the current PLSQL_CODE_TYPE setting for each PL/SQL object.The %_PLSQL_OBJECT_SETTINGS views include the current PLSQL_CODE_TYPE setting for each PL/SQL object. ALTER SESSION SET PLSQL_CODE_TYPE=NATIVE; ALTER SESSION SET PLSQL_CODE_TYPE=INTERPRETED;

New PL/SQL Compiler Warning A new PL/SQL compiler warning has been added to identify WHEN OTHERS exception handlers that do no re-raise errors using RAISE or RAISE_APPLICATION_ERROR.A new PL/SQL compiler warning has been added to identify WHEN OTHERS exception handlers that do no re-raise errors using RAISE or RAISE_APPLICATION_ERROR. Such exception handlers can often hide code failures that result in hard to identify bugs.Such exception handlers can often hide code failures that result in hard to identify bugs. ALTER SESSION SET plsql_warnings = 'enable:all'; ALTER PROCEDURE others_test COMPILE; SHOW ERRORS SP2-0804: Procedure created with compilation warnings Errors for PROCEDURE OTHERS_TEST: LINE/COL ERROR /8 PLW-06009: procedure "OTHERS_TEST" OTHERS handler does not end in RAISE or RAISE_APPLICATION_ERROR RAISE or RAISE_APPLICATION_ERROR

PL/SQL Function Result Cache The cross-session PL/SQL function result cache boosts the performance of PL/SQL functions by caching results in the SGA.The cross-session PL/SQL function result cache boosts the performance of PL/SQL functions by caching results in the SGA. The cache is accessible to any session calling the same function with the same parameters.The cache is accessible to any session calling the same function with the same parameters. This results in significant performance improvements when functions are called for each row in an SQL query, or within a loop in PL/SQL.This results in significant performance improvements when functions are called for each row in an SQL query, or within a loop in PL/SQL. The optional RELIES_ON clause is used to specify dependent tables and views so the result cache can be invalidated if the dependent objects are modified.The optional RELIES_ON clause is used to specify dependent tables and views so the result cache can be invalidated if the dependent objects are modified. DemoDemoDemo The cache is managed using the RESULT_CACHE_% parameters and the DBMS_RESULT_CACHE package.The cache is managed using the RESULT_CACHE_% parameters and the DBMS_RESULT_CACHE package. Information about the cache is displayed using the V$RESULT_CACHE_% views.Information about the cache is displayed using the V$RESULT_CACHE_% views. CREATE OR REPLACE FUNCTION get_value (p_in IN NUMBER) RETURN NUMBER RETURN NUMBER RESULT_CACHE RESULT_CACHE CREATE OR REPLACE FUNCTION get_value (p_in IN NUMBER) RETURN NUMBER RETURN NUMBER RESULT_CACHE RELIES_ON (res_cache_test_tab) RESULT_CACHE RELIES_ON (res_cache_test_tab)

Triggers: ENABLE and DISABLE clauses It has long been possible to enable and disable triggers:It has long been possible to enable and disable triggers: –ALTER TRIGGER DISABLE; –ALTER TRIGGER ENABLE; –ALTER TABLE DISABLE ALL TRIGGERS; –ALTER TABLE ENABLE ALL TRIGGERS; Oracle 11g allows triggers to be created in a DISABLED state, rather than creating it as enabled, then altering it to disabled.Oracle 11g allows triggers to be created in a DISABLED state, rather than creating it as enabled, then altering it to disabled. CREATE OR REPLACE TRIGGER trigger_control_test_trg BEFORE INSERT ON trigger_control_test FOR EACH ROW DISABLEBEGIN DBMS_OUTPUT.put_line('TRIGGER_CONTROL_TEST_TRG - Executed'); DBMS_OUTPUT.put_line('TRIGGER_CONTROL_TEST_TRG - Executed');END;/

Triggers: FOLLOWS clause Oracle allows more than one trigger to be created for the same timing point, but has never guaranteed the execution order.Oracle allows more than one trigger to be created for the same timing point, but has never guaranteed the execution order. The FOLLOWS clause in 11g guarantees execution order of triggers defined with the same timing point.The FOLLOWS clause in 11g guarantees execution order of triggers defined with the same timing point. CREATE OR REPLACE TRIGGER test_tab_trigger_2 BEFORE INSERT ON test_tab FOR EACH ROW FOLLOWS test_tab_trigger_1 BEGIN -- Do something. -- Do something. NULL; NULL;END;/

Triggers: Compound triggers A compound trigger allows code for one or more timing points for a specific object to be combined into a single trigger.A compound trigger allows code for one or more timing points for a specific object to be combined into a single trigger. Global declaration is in scope for the whole operation.Global declaration is in scope for the whole operation. Complete clean-up once operation is complete, even when exceptions are raised.Complete clean-up once operation is complete, even when exceptions are raised. DemoDemoDemo CREATE OR REPLACE TRIGGER CREATE OR REPLACE TRIGGER FOR ON FOR ON COMPOUND TRIGGER COMPOUND TRIGGER -- Global declaration. -- Global declaration. g_global_variable VARCHAR2(10); g_global_variable VARCHAR2(10); BEFORE STATEMENT IS BEFORE STATEMENT IS BEGIN BEGIN NULL; -- Do something here. NULL; -- Do something here. END BEFORE STATEMENT; END BEFORE STATEMENT; BEFORE EACH ROW IS BEFORE EACH ROW IS BEGIN BEGIN NULL; -- Do something here. NULL; -- Do something here. END BEFORE EACH ROW; END BEFORE EACH ROW; AFTER EACH ROW IS AFTER EACH ROW IS BEGIN BEGIN NULL; -- Do something here. NULL; -- Do something here. END AFTER EACH ROW; END AFTER EACH ROW; AFTER STATEMENT IS AFTER STATEMENT IS BEGIN BEGIN NULL; -- Do something here. NULL; -- Do something here. END AFTER STATEMENT; END AFTER STATEMENT; END ; /

Miscellaneous Changes XML DB Native Web Services allow PL/SQL procedures and functions to be published as web services.XML DB Native Web Services allow PL/SQL procedures and functions to be published as web services. Referencing columns in WHERE clause of FORALL no longer causes PLS Makes using bulk-binds for DML even simpler.Referencing columns in WHERE clause of FORALL no longer causes PLS Makes using bulk-binds for DML even simpler. PIVOT and UNPIVOT operators available from SQL.PIVOT and UNPIVOT operators available from SQL. REGEXP_INSTR and REGEXP_SUBSTR now include sub- expression pattern matches. REGEXP_COUNT counts occurrences of a pattern in a string.REGEXP_INSTR and REGEXP_SUBSTR now include sub- expression pattern matches. REGEXP_COUNT counts occurrences of a pattern in a string. Query Result Cache allows caching of query data, similar to PL/SQL Function Result Cache.Query Result Cache allows caching of query data, similar to PL/SQL Function Result Cache. Database Resident Connection Pool (DRCP) brings connection pooling to languages that don’t natively support it.Database Resident Connection Pool (DRCP) brings connection pooling to languages that don’t natively support it.

Summary Named and Mixed Notation in PL/SQL Subprogram InvocationsNamed and Mixed Notation in PL/SQL Subprogram Invocations Sequences in PL/SQL ExpressionsSequences in PL/SQL Expressions SIMPLE_INTEGER DatatypeSIMPLE_INTEGER Datatype CONTINUE StatementCONTINUE Statement Dynamic SQL EnhancementsDynamic SQL Enhancements Generalized InvocationGeneralized Invocation Automatic Subprogram InliningAutomatic Subprogram Inlining PL/ScopePL/Scope PL/SQL Hierarchical ProfilerPL/SQL Hierarchical Profiler PL/SQL Native Compiler Generates Native Code DirectlyPL/SQL Native Compiler Generates Native Code Directly New PL/SQL Compiler WarningNew PL/SQL Compiler Warning Cross-Session PL/SQL Function Result CacheCross-Session PL/SQL Function Result Cache Trigger Enhancements in Oracle Database 11g Release 1Trigger Enhancements in Oracle Database 11g Release 1 Miscellaneous additional enhancements.Miscellaneous additional enhancements.

The End… Questions?Questions? References: Demos: