SlideShare a Scribd company logo
1 of 24
Download to read offline
•
                  Ramin Orucov

   Oracle 11g PL/SQL
proqramlaşdırma yenilikləri

            28 İyul 2012
         Qafqaz Universiteti
Planı




 1 2 3 4
   Dil
yenilikləri
              Performans
               yenilikləri
                                Yeni
                             funksional
                              imkanlar
                                            Digər
                                          yeniliklər
1
    Dil yenilikləri
Dil yenilikləri

•
    SEQUENCE istifadəsi
•
    CONTİNUE əmri
•
    Qarışıq parameter dəstəyi
•
    FORALL bulk bind atribute
    dəstəyi
SEQUENCE

DECLARE
   l_new_id NUMBER;
BEGIN
      -- Kohne sequence istifade sintaksisi
      SELECT employees_seq.NEXTVAL INTO
  l_new_id FROM DUAL;
      DBMS_OUTPUT.put_line ('New id = ' ||
  l_new_id);
END;

DECLARE
     l_new_id NUMBER;
BEGIN
     -- Yeni sequence istifade sintaksisi
     l_new_id := employees_seq.NEXTVAL;
     DBMS_OUTPUT.put_line ('New id = ' ||
  l_new_id);
CONTINUE

begin -- CONTINUE
     for k in 1 .. 20
     loop
         if mod(k, 2)=0 then
             continue;
         end if;
         dbms_output.put_line(k);
     end loop;
end;

begin  -- CONTINUE WHEN
     for k in 1 .. 20
     loop
         continue when mod(k, 2)=0;
  dbms_output.put_line(k);
     end loop;
end;
Qarışıq parameter dəstəyi

create or replace function full_name(p_first_name in varchar2,
    p_last_name in varchar2)
return varchar2
is
begin
   return p_first_name || ' ' || p_last_name;
end full_name;

select employee_id, full_name(first_name, last_name) employee, salary
from hr.employees
 
-- Yeni imkan
select employee_id, full_name(p_first_name => first_name, p_last_name
=> last_name) employee, salary from hr.employees
 
select employee_id, full_name(p_last_name => last_name, p_first_name
=> first_name) employee, salary from hr.employees

select employee_id, full_name(first_name, p_last_name => last_name)
    employee, salary from hr.employees
FORALL bulk bind atribute dəstəyi

declare
   type employee_aat is table of hr.employees
%rowtype index by pls_integer;
   l_employees employee_aat;
begin
   select * bulk collect into l_employees from
hr.employees;

  forall i in 1..l_employees.count
    update hr.employees
    set salary = l_employees(i).salary - 100
    where employee_id =
l_employees(i).employee_id;

  dbms_output.put_line(SQL%ROWCOUNT || ' rows
updated');
end;
FORALL bulk bind atribute dəstəyi

Oracle Error
ORA-06550: line 9, column 22:
PLS-00436: implementation restriction: cannot
reference fields of BULK In-BIND table of records
ORA-06550: line 9, column 22:
PLS-00382: expression is of wrong type
2
    Performans yenilikləri
Performans yenilikləri

•
    PL/SQL native compilation
•
    SİMPLE_İNTEGER
•
    Fine grained dependency
    tracking
•
    RESULT CACHE
•
    COMPOUND trigger
•
    İntra-unit inline
PL/SQL Native compilation

•
    PVM – PL/SQL Virtual
    Machine

•
    Oracle 9i, 10g – C compiler,
    OS linker, loader
    proqramları

•
    Plsql_Code_type
SİMPLE_İNTEGER

Oracle 11g VBİS-də yeni SIMPLE_INTEGER adlı ədəd tipi
əlavə edilmişdir, onun qiymət aralığı -232 və 232-1 intervalında
ola bilər, NULL qiyməti qəbul etmir.
Bu intervalın alt sərhədini keçəndə qiymət avtomatik olaraq üst
sərhədə bərabər olur, oxşar şəkildə də üst sərhədi keçəndə
onun qiyməti avtomatik alt sərhədin qiymətinə bərabər olur.

Oracle şirkəti PLS_İNTEGER tipinin əvəzinə yeni
SİMPLE_İNTEGER tipini istifadə etməyi tövsiyə edir. Bu tipdə
olan dəyişkənlər ilə hesablamalar daha sürətli olur. Sadə testlər
əsasında aşağıdakı sürət fərqlərini demək olar:
INTERPRETED rejimdə PLS_İNTEGER-ə görə 10%,
NUMBER tipinə görə isə 2-2.5 dəfə daha sürətli işləyir.
NATİVE rejimdə isə PLS_İNTEGER-ə görə 8-10 dəfə,
NUMBER tipinə görə isə 30 dəfə daha sürətli işləyir.
RESULT_CACHE

CREATE OR REPLACE FUNCTION get_employee
(p_employee_id IN employees.employee_id%TYPE)
  RETURN employees%ROWTYPE
  RESULT_CACHE RELIES_ON (employees)
IS
   l_employee employees%ROWTYPE;
BEGIN
  SELECT *
     INTO l_employee
     FROM employees
   WHERE employee_id = p_employee_id;

  RETURN l_employee;
EXCEPTION
  WHEN NO_DATA_FOUND
  THEN
   /* Return an empty record. */
   RETURN l_employee;
END get_employee;
COMPOUND TRIGGER

CREATE TRIGGER trigger_name
FOR [INSERT | UPDATE | DELETE] OF [COLUMN] ON
[TABLE]
COMPOUND TRIGGER

BEFORE STATEMENT IS
BEGIN
…
END BEFORE STATEMENT;

AFTER STATEMENT IS
BEGIN
…
END AFTER STATEMENT;

BEFORE EACH ROW IS
BEGIN
…
END BEFORE EACH ROW;
3
    Yeni funksional imkanlar
Yeni funksional imkanlar
•
  Triggerlərin işləmə sırası
•
  DBMS_SQL CLOB dəstəyi
•
  DBMS_SQL təhlükəsizlik
•
  UTL_* paketləri üçün
  səlahiyyət
Triggerlərin işləmə sırası
İlk dəfə Oracle 11g VBİS-də bir cədvəl üzərində olan triggerlərin
işləmə ardıcıllığını təyin etmək mümkün oldu, bunun üçün yeni
FOLLOWS adlı açar söz əlavə edildi.

create table test_table(
   x number
);
create or replace trigger trigger1
after insert on test_table
for each row
begin
   dbms_output.put_line('Trigger1 - value = ' || :NEW.x);
end trigger1;
 
Triggerlərin işləmə sırası
create or replace trigger trigger2
after insert on test_table
for each row
follows trigger1
begin
   dbms_output.put_line('Trigger2 - value = ' || :NEW.x);
end trigger2;

create or replace trigger trigger3
after insert on test_table
for each row
follows trigger2
begin
   dbms_output.put_line('Trigger3 - value = ' || :NEW.x);
end trigger3;
Triggerlərin işləmə sırası
insert into test_table values(1);
insert into test_table values(2);
insert into test_table values(3);

Nəticə
Trigger1 - value = 1
Trigger2 - value = 1
Trigger3 - value = 1
Trigger1 - value = 2
Trigger2 - value = 2
Trigger3 - value = 2
Trigger1 - value = 3
Trigger2 - value = 3
Trigger3 - value = 3
4
    Digər yeniliklər
Digər yeniliklər
•
  PL/SQL hierarchical profiler
•
  PL/Scope
Qaynaqlar
•
    Sam R. Alapati, Charles Kim, Oracle Database 11g - New
    Features for DBAs and Developers, Apress
•
    http
    ://docs.oracle.com/cd/E14072_01/appdev.112/e10472/whatsnew.htm
•
    http
    ://www.oracle.com/technology/tech/pl_sql/pdf/PL/SQL_new_in_11gr1.pdf
    , Oracle White Paper, PL/SQL Enhancements in Oracle
    Database 11g
•
    http://
    docs.oracle.com/cd/E11882_01/appdev.112/e10471/adfns_dependencies.h
•
    http://
    www.oracle.com/technetwork/articles/sql/11g-efficient-coding-093640.html

•
    http://www.oracle-developer.net/display.php?id=507
Əlaqə

Web site: www.azeroug.org
Bloq: raminorucov.wordpress.com
Facebook: www.facebook.com/ramin.orucov

More Related Content

Viewers also liked

Lesson4 Protect and maintain databases
Lesson4 Protect and maintain databases Lesson4 Protect and maintain databases
Lesson4 Protect and maintain databases Abdullatif Tarakji
 
Seminar on mobile os
Seminar on mobile osSeminar on mobile os
Seminar on mobile osabani12
 
MarketLine Country Statistics Database
MarketLine Country Statistics DatabaseMarketLine Country Statistics Database
MarketLine Country Statistics DatabaseMarketLine
 
Oracle hard and soft parsing
Oracle hard and soft parsingOracle hard and soft parsing
Oracle hard and soft parsingIshaan Guliani
 
Lesson5 Print and export databases
Lesson5 Print and export databases Lesson5 Print and export databases
Lesson5 Print and export databases Abdullatif Tarakji
 
الوحدة التاسعة - قاعدة البيانات وادارتها
الوحدة التاسعة - قاعدة البيانات وادارتهاالوحدة التاسعة - قاعدة البيانات وادارتها
الوحدة التاسعة - قاعدة البيانات وادارتهاAmin Abu Hammad
 
Performance Tuning Azure SQL Database
Performance Tuning Azure SQL DatabasePerformance Tuning Azure SQL Database
Performance Tuning Azure SQL DatabaseGrant Fritchey
 
Top frinds-انشاء-استعلام-بطريقه-المعالج-6-copy
Top frinds-انشاء-استعلام-بطريقه-المعالج-6-copyTop frinds-انشاء-استعلام-بطريقه-المعالج-6-copy
Top frinds-انشاء-استعلام-بطريقه-المعالج-6-copytop friends
 
SQL Server Tuning to Improve Database Performance
SQL Server Tuning to Improve Database PerformanceSQL Server Tuning to Improve Database Performance
SQL Server Tuning to Improve Database PerformanceMark Ginnebaugh
 
Database system concepts and architecture
Database system concepts and architectureDatabase system concepts and architecture
Database system concepts and architectureMahmoud Almadhoun
 
Webinar: Performance Tuning + Optimization
Webinar: Performance Tuning + OptimizationWebinar: Performance Tuning + Optimization
Webinar: Performance Tuning + OptimizationMongoDB
 
Performance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL DatabasePerformance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL DatabaseTung Nguyen Thanh
 
الوحدة الخامسة - قاعدة البيانات وادارتها
الوحدة الخامسة - قاعدة البيانات وادارتهاالوحدة الخامسة - قاعدة البيانات وادارتها
الوحدة الخامسة - قاعدة البيانات وادارتهاAmin Abu Hammad
 
أنظمة ادارة قواعد البيانات
أنظمة ادارة قواعد البياناتأنظمة ادارة قواعد البيانات
أنظمة ادارة قواعد البياناتMahmoud Almadhoun
 
الوحدة الثامنة - قاعدة البيانات وادارتها
الوحدة الثامنة - قاعدة البيانات وادارتهاالوحدة الثامنة - قاعدة البيانات وادارتها
الوحدة الثامنة - قاعدة البيانات وادارتهاAmin Abu Hammad
 
Database Performance Tuning
Database Performance Tuning Database Performance Tuning
Database Performance Tuning Arno Huetter
 

Viewers also liked (20)

Lesson4 Protect and maintain databases
Lesson4 Protect and maintain databases Lesson4 Protect and maintain databases
Lesson4 Protect and maintain databases
 
Lesson11 Create Query
Lesson11 Create QueryLesson11 Create Query
Lesson11 Create Query
 
Seminar on mobile os
Seminar on mobile osSeminar on mobile os
Seminar on mobile os
 
MarketLine Country Statistics Database
MarketLine Country Statistics DatabaseMarketLine Country Statistics Database
MarketLine Country Statistics Database
 
Oracle hard and soft parsing
Oracle hard and soft parsingOracle hard and soft parsing
Oracle hard and soft parsing
 
Chapter 11new
Chapter 11newChapter 11new
Chapter 11new
 
Lesson5 Print and export databases
Lesson5 Print and export databases Lesson5 Print and export databases
Lesson5 Print and export databases
 
الوحدة التاسعة - قاعدة البيانات وادارتها
الوحدة التاسعة - قاعدة البيانات وادارتهاالوحدة التاسعة - قاعدة البيانات وادارتها
الوحدة التاسعة - قاعدة البيانات وادارتها
 
Performance Tuning Azure SQL Database
Performance Tuning Azure SQL DatabasePerformance Tuning Azure SQL Database
Performance Tuning Azure SQL Database
 
Performance tuning in sql server
Performance tuning in sql serverPerformance tuning in sql server
Performance tuning in sql server
 
أساسيات التأمين
أساسيات التأمينأساسيات التأمين
أساسيات التأمين
 
Top frinds-انشاء-استعلام-بطريقه-المعالج-6-copy
Top frinds-انشاء-استعلام-بطريقه-المعالج-6-copyTop frinds-انشاء-استعلام-بطريقه-المعالج-6-copy
Top frinds-انشاء-استعلام-بطريقه-المعالج-6-copy
 
SQL Server Tuning to Improve Database Performance
SQL Server Tuning to Improve Database PerformanceSQL Server Tuning to Improve Database Performance
SQL Server Tuning to Improve Database Performance
 
Database system concepts and architecture
Database system concepts and architectureDatabase system concepts and architecture
Database system concepts and architecture
 
Webinar: Performance Tuning + Optimization
Webinar: Performance Tuning + OptimizationWebinar: Performance Tuning + Optimization
Webinar: Performance Tuning + Optimization
 
Performance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL DatabasePerformance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL Database
 
الوحدة الخامسة - قاعدة البيانات وادارتها
الوحدة الخامسة - قاعدة البيانات وادارتهاالوحدة الخامسة - قاعدة البيانات وادارتها
الوحدة الخامسة - قاعدة البيانات وادارتها
 
أنظمة ادارة قواعد البيانات
أنظمة ادارة قواعد البياناتأنظمة ادارة قواعد البيانات
أنظمة ادارة قواعد البيانات
 
الوحدة الثامنة - قاعدة البيانات وادارتها
الوحدة الثامنة - قاعدة البيانات وادارتهاالوحدة الثامنة - قاعدة البيانات وادارتها
الوحدة الثامنة - قاعدة البيانات وادارتها
 
Database Performance Tuning
Database Performance Tuning Database Performance Tuning
Database Performance Tuning
 

More from Ramin Orujov

Best practices for RESTful web service design
Best practices for RESTful web service designBest practices for RESTful web service design
Best practices for RESTful web service designRamin Orujov
 
Android Platform Overview - Azercell Barama
Android Platform Overview - Azercell BaramaAndroid Platform Overview - Azercell Barama
Android Platform Overview - Azercell BaramaRamin Orujov
 
Hackathon Azerbaijan Android API Overview and Repository
Hackathon Azerbaijan Android API Overview and RepositoryHackathon Azerbaijan Android API Overview and Repository
Hackathon Azerbaijan Android API Overview and RepositoryRamin Orujov
 
Hackathon Azerbaijan Android Age - Next Step
Hackathon Azerbaijan Android Age - Next StepHackathon Azerbaijan Android Age - Next Step
Hackathon Azerbaijan Android Age - Next StepRamin Orujov
 
Ikt sahəsində əsas istiqamətlər və iş imkanları
Ikt sahəsində əsas istiqamətlər və iş imkanlarıIkt sahəsində əsas istiqamətlər və iş imkanları
Ikt sahəsində əsas istiqamətlər və iş imkanlarıRamin Orujov
 

More from Ramin Orujov (6)

Best practices for RESTful web service design
Best practices for RESTful web service designBest practices for RESTful web service design
Best practices for RESTful web service design
 
Android Platform Overview - Azercell Barama
Android Platform Overview - Azercell BaramaAndroid Platform Overview - Azercell Barama
Android Platform Overview - Azercell Barama
 
Hackathon Azerbaijan Android API Overview and Repository
Hackathon Azerbaijan Android API Overview and RepositoryHackathon Azerbaijan Android API Overview and Repository
Hackathon Azerbaijan Android API Overview and Repository
 
Hackathon Azerbaijan Android Age - Next Step
Hackathon Azerbaijan Android Age - Next StepHackathon Azerbaijan Android Age - Next Step
Hackathon Azerbaijan Android Age - Next Step
 
Ikt sahəsində əsas istiqamətlər və iş imkanları
Ikt sahəsində əsas istiqamətlər və iş imkanlarıIkt sahəsində əsas istiqamətlər və iş imkanları
Ikt sahəsində əsas istiqamətlər və iş imkanları
 
Android platform
Android platformAndroid platform
Android platform
 

Oracle 11g PL/SQL proqramlamlaşdırma yenilikləri

  • 1. Ramin Orucov Oracle 11g PL/SQL proqramlaşdırma yenilikləri 28 İyul 2012 Qafqaz Universiteti
  • 2. Planı 1 2 3 4 Dil yenilikləri Performans yenilikləri Yeni funksional imkanlar Digər yeniliklər
  • 3. 1 Dil yenilikləri
  • 4. Dil yenilikləri • SEQUENCE istifadəsi • CONTİNUE əmri • Qarışıq parameter dəstəyi • FORALL bulk bind atribute dəstəyi
  • 5. SEQUENCE DECLARE l_new_id NUMBER; BEGIN -- Kohne sequence istifade sintaksisi SELECT employees_seq.NEXTVAL INTO l_new_id FROM DUAL; DBMS_OUTPUT.put_line ('New id = ' || l_new_id); END; DECLARE l_new_id NUMBER; BEGIN -- Yeni sequence istifade sintaksisi l_new_id := employees_seq.NEXTVAL; DBMS_OUTPUT.put_line ('New id = ' || l_new_id);
  • 6. CONTINUE begin -- CONTINUE for k in 1 .. 20 loop if mod(k, 2)=0 then continue; end if; dbms_output.put_line(k); end loop; end; begin -- CONTINUE WHEN for k in 1 .. 20 loop continue when mod(k, 2)=0; dbms_output.put_line(k); end loop; end;
  • 7. Qarışıq parameter dəstəyi create or replace function full_name(p_first_name in varchar2, p_last_name in varchar2) return varchar2 is begin return p_first_name || ' ' || p_last_name; end full_name; select employee_id, full_name(first_name, last_name) employee, salary from hr.employees   -- Yeni imkan select employee_id, full_name(p_first_name => first_name, p_last_name => last_name) employee, salary from hr.employees   select employee_id, full_name(p_last_name => last_name, p_first_name => first_name) employee, salary from hr.employees select employee_id, full_name(first_name, p_last_name => last_name) employee, salary from hr.employees
  • 8. FORALL bulk bind atribute dəstəyi declare type employee_aat is table of hr.employees %rowtype index by pls_integer; l_employees employee_aat; begin select * bulk collect into l_employees from hr.employees; forall i in 1..l_employees.count update hr.employees set salary = l_employees(i).salary - 100 where employee_id = l_employees(i).employee_id; dbms_output.put_line(SQL%ROWCOUNT || ' rows updated'); end;
  • 9. FORALL bulk bind atribute dəstəyi Oracle Error ORA-06550: line 9, column 22: PLS-00436: implementation restriction: cannot reference fields of BULK In-BIND table of records ORA-06550: line 9, column 22: PLS-00382: expression is of wrong type
  • 10. 2 Performans yenilikləri
  • 11. Performans yenilikləri • PL/SQL native compilation • SİMPLE_İNTEGER • Fine grained dependency tracking • RESULT CACHE • COMPOUND trigger • İntra-unit inline
  • 12. PL/SQL Native compilation • PVM – PL/SQL Virtual Machine • Oracle 9i, 10g – C compiler, OS linker, loader proqramları • Plsql_Code_type
  • 13. SİMPLE_İNTEGER Oracle 11g VBİS-də yeni SIMPLE_INTEGER adlı ədəd tipi əlavə edilmişdir, onun qiymət aralığı -232 və 232-1 intervalında ola bilər, NULL qiyməti qəbul etmir. Bu intervalın alt sərhədini keçəndə qiymət avtomatik olaraq üst sərhədə bərabər olur, oxşar şəkildə də üst sərhədi keçəndə onun qiyməti avtomatik alt sərhədin qiymətinə bərabər olur. Oracle şirkəti PLS_İNTEGER tipinin əvəzinə yeni SİMPLE_İNTEGER tipini istifadə etməyi tövsiyə edir. Bu tipdə olan dəyişkənlər ilə hesablamalar daha sürətli olur. Sadə testlər əsasında aşağıdakı sürət fərqlərini demək olar: INTERPRETED rejimdə PLS_İNTEGER-ə görə 10%, NUMBER tipinə görə isə 2-2.5 dəfə daha sürətli işləyir. NATİVE rejimdə isə PLS_İNTEGER-ə görə 8-10 dəfə, NUMBER tipinə görə isə 30 dəfə daha sürətli işləyir.
  • 14. RESULT_CACHE CREATE OR REPLACE FUNCTION get_employee (p_employee_id IN employees.employee_id%TYPE) RETURN employees%ROWTYPE RESULT_CACHE RELIES_ON (employees) IS l_employee employees%ROWTYPE; BEGIN SELECT * INTO l_employee FROM employees WHERE employee_id = p_employee_id; RETURN l_employee; EXCEPTION WHEN NO_DATA_FOUND THEN /* Return an empty record. */ RETURN l_employee; END get_employee;
  • 15. COMPOUND TRIGGER CREATE TRIGGER trigger_name FOR [INSERT | UPDATE | DELETE] OF [COLUMN] ON [TABLE] COMPOUND TRIGGER BEFORE STATEMENT IS BEGIN … END BEFORE STATEMENT; AFTER STATEMENT IS BEGIN … END AFTER STATEMENT; BEFORE EACH ROW IS BEGIN … END BEFORE EACH ROW;
  • 16. 3 Yeni funksional imkanlar
  • 17. Yeni funksional imkanlar • Triggerlərin işləmə sırası • DBMS_SQL CLOB dəstəyi • DBMS_SQL təhlükəsizlik • UTL_* paketləri üçün səlahiyyət
  • 18. Triggerlərin işləmə sırası İlk dəfə Oracle 11g VBİS-də bir cədvəl üzərində olan triggerlərin işləmə ardıcıllığını təyin etmək mümkün oldu, bunun üçün yeni FOLLOWS adlı açar söz əlavə edildi. create table test_table( x number ); create or replace trigger trigger1 after insert on test_table for each row begin dbms_output.put_line('Trigger1 - value = ' || :NEW.x); end trigger1;  
  • 19. Triggerlərin işləmə sırası create or replace trigger trigger2 after insert on test_table for each row follows trigger1 begin dbms_output.put_line('Trigger2 - value = ' || :NEW.x); end trigger2; create or replace trigger trigger3 after insert on test_table for each row follows trigger2 begin dbms_output.put_line('Trigger3 - value = ' || :NEW.x); end trigger3;
  • 20. Triggerlərin işləmə sırası insert into test_table values(1); insert into test_table values(2); insert into test_table values(3); Nəticə Trigger1 - value = 1 Trigger2 - value = 1 Trigger3 - value = 1 Trigger1 - value = 2 Trigger2 - value = 2 Trigger3 - value = 2 Trigger1 - value = 3 Trigger2 - value = 3 Trigger3 - value = 3
  • 21. 4 Digər yeniliklər
  • 22. Digər yeniliklər • PL/SQL hierarchical profiler • PL/Scope
  • 23. Qaynaqlar • Sam R. Alapati, Charles Kim, Oracle Database 11g - New Features for DBAs and Developers, Apress • http ://docs.oracle.com/cd/E14072_01/appdev.112/e10472/whatsnew.htm • http ://www.oracle.com/technology/tech/pl_sql/pdf/PL/SQL_new_in_11gr1.pdf , Oracle White Paper, PL/SQL Enhancements in Oracle Database 11g • http:// docs.oracle.com/cd/E11882_01/appdev.112/e10471/adfns_dependencies.h • http:// www.oracle.com/technetwork/articles/sql/11g-efficient-coding-093640.html • http://www.oracle-developer.net/display.php?id=507
  • 24. Əlaqə Web site: www.azeroug.org Bloq: raminorucov.wordpress.com Facebook: www.facebook.com/ramin.orucov