Oracle Database 11g SQL and PL/SQL - New Functionality

Based on Oracle's Beta (5) 11.1.0.5.0 for Linux x86

PL/SQL Result caching
Pl/SQL result caching provides the ability to cache the results of a particular procedure or function, so that upon another invocation, assuming that the input parameters and the named underlying objects have not changed, will return the exact same results of the original invocation without incurring any database processing. This is possible because the results have been cached after the first execution and will stay in the SGA until one of the underlying objects have been compromised, or memory runs low.

Named and Mixed notation supported in SQL statements
SQL statements support the use of system functions (such as NVL, SUBSTR, TO_CHAR, etc) as well as user defined functions in order to format or massage data to meet a particular requirement. In versions prior to 11g, the SQL engine required that you use positional notation for any parameter that you pass into a user defined function within a SQL statement. 11g allows the developer to use named or mixed notation in your SQL statement function call. This provides the developer greater flexibility in writing their SQL.

Allow Sequences in PL/SQL Expressions
In previous releases, you could only retrieve the value of a sequence (CURRVAL or NEXTVAL) by invoking a cursor (explicit or implicit) for PL/SQL based code. This method introduced runtime and scalability issues within a developer's code. OLD Way
DECLARE
    V_NEW_VAL NUMBER;
BEGIN
    SELECT MY_SEQ.NEXTVAL INTO V_NEW_VAL FROM DUAL;
END;
NEW Way
DECLARE
    V_NEW_VAL NUMBER;
BEGIN
    V_NEW_VAL := MY_SEQ.NEXTVAL;
END;
CONCLUSION

No Cursor is needed so the code is more efficient.

Enhancements to Dynamic SQL
EXECUTE IMMEDIATE and DBMS_SQL now take CLOBS for SQL/PLSQL statements. The previous limit was 32k.

Forcing all WHEN OTHERS Exceptions to end in a RAISE or RAISE_APPLICATION_ERROR
This functionality forces all procedures that contain exception handling with a "when others" clause to propagate any unhandled exception up the call stack. This functionality is very important because it removes the possibility of a developer placing a "null" in the "when others" exception which will end the exception processing there and the calling procedure will never know that an error occurred.

11g Enhancements with Native Compilation
Native Compilation translates PL/SQL to code that is Native to the residing database operating system in order to boost performance.

In previous versions of PL/SQL, in order to take advantage of Native Compilation, the developer would need to translate PL/SQL code to C code. The next step would entail compiling/translating the C code to native code. Not only would this create an extra step in the development process, but would also require a C compiler on your development and production server. This is not only counter productive it is also a security risk.

Greater trigger control
Oracle 11g provides the ability to enable and disable all triggers at the table level and control the order of how triggers are fired.

Simple Integer
The new 11g data type SIMPLE_INTEGER is more efficient than PLS_INTEGER because SIMPLE_INTEGER operations are done directly at the "hardware level". Since the data type has a built in NOT NULL requirement and a limitation which is the same as the PLS_INTEGER data type (-2,147,483,648 and 2,147,483,648), the OS does not need to check for a value of null or overflow.