Top Ten List: Oracle 11g PL/SQL Features and Enhancements
Top Ten List: Oracle 11g PL/SQL Features and Enhancements
Oracle 11g PL/SQL Features and Enhancements Rick Michaud Senior Sales Consultant Oracle Corporation
1
Wednesday, May 5, 2010 1
Who Am I?
Senior Sales Consultant for Oracle for the last 3 years. 20 years as an architect, developer and DBA. My last name is pronounced Me Show
Complex Agenda
Introduction
#10
Simplified Sequence Expressions
8
Wednesday, May 5, 2010 8
After 11gR2:
DECLARE v BINARY_INTEGER; BEGIN v := MY_SEQ.NEXTVAL; w := MY_SEQ.CURRVAL; END;
11gR1 9
#9
Fine-Grained Dependency Tracking
10
Wednesday, May 5, 2010 10
11gR1
#8
Named and Mixed Notation
12
Wednesday, May 5, 2010 12
Instead of:
SELECT f(pn=>3, p2=>2, p1=>1) FROM dual
11gR1 13
Wednesday, May 5, 2010 13
#7
DBFS Content API
14
Wednesday, May 5, 2010 14
11gR2 15
15
16
#6
PL/SQL Subprogram Inlining
17
Wednesday, May 5, 2010 17
11gR1
#5
PL/Scope
19
Wednesday, May 5, 2010 19
#5 PL/Scope
Developer productivity tool that enables navigation of code by named tags Useful for analyzing: Impact of code changes beforehand Inherited code from a developer who didnt believe in documentation. Similar to c-scope for C Developers Data For PL/SQL program units generated at compile time and stored in data dictionary Tooling available in SQL Developer
20
Wednesday, May 5, 2010 20
11gR1
#4
PL/SQL Hierarchical Profiler
21
Wednesday, May 5, 2010 21
11gR1
23
#3
Edition-based Redefinition
24
Wednesday, May 5, 2010 24
#3 Edition-Based Redenition
Enables application developers to upgrade objects while in use Reduces system downtime Enables seamless application upgrades Data changes are possible through cross-edition triggers. Supported objects:
Synonym Function Package Specication Type Specication Library View Procedure Package Body Type Body Trigger
11gR2
25
Wednesday, May 5, 2010 25
Simple Example
CREATE OR REPLACE FUNCTION NORMALIZED_NAME (FIRST_NAME IN VARCHAR2, LAST_NAME IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN FIRST_NAME || ' ' || LAST_NAME; END NORMALIZED_NAME; / DECLARE v_Return VARCHAR2(200); BEGIN v_Return := NORMALIZED_NAME('john','doe); DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return); END; / >>v_Return = john doe CREATE EDITION patch_normalized_name_1; ALTER SESSION SET EDITION = patch_normalized_name_1; CREATE OR REPLACE FUNCTION NORMALIZED_NAME (FIRST_NAME IN VARCHAR2, LAST_NAME IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN INITCAP(LAST_NAME) || ', ' || INITCAP(FIRST_NAME); END NORMALIZED_NAME; / DECLARE v_Return VARCHAR2(200); BEGIN v_Return := NORMALIZED_NAME('john','doe'); DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return); END; / >>v_Return = Doe, John ALTER SESSION SET EDITION = ora$base;; DECLARE v_Return VARCHAR2(200); BEGIN v_Return := NORMALIZED_NAME('john','doe); DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return); END; / >>v_Return = john doe
26
#2
Native Database Web Services
27
Wednesday, May 5, 2010 27
11gR1
#1
PL/SQL Native Compiler
29
Wednesday, May 5, 2010 29
11gR1
30
Wednesday, May 5, 2010 30
31
Wednesday, May 5, 2010 31
32
Wednesday, May 5, 2010 32
Burning Questions?
33
Wednesday, May 5, 2010 33
34