Azer oug sadigov xayyam

434 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
434
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Sizin suallarınız
  • Təşəkkürlər AZEROUG
  • Azer oug sadigov xayyam

    1. 1. Sadıqov Xəyyam Prosedurlar, Funksiyalar və Paketler http://www.azeroug.org
    2. 2. http://www.azeroug.org 2/ Özüm haqqda Şənbə, 14 Sentyabr 2013 Sadıqov Xəyyam Azerfon LLC Billing and VAS Engineer SQL and PL/SQL Trainer Sadıgov Xəyyam
    3. 3. http://www.azeroug.org 3/ PL/SQL Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
    4. 4. http://www.azeroug.org 4/ Procedurlar və Functionlar nədi ? Şənbə, 14 Sentyabr 2013 – PL/SQL bloklar – PL/SQL subprogram adlanırlar – Anonym bloklar kimi blok strukturları var • Könüllü deklarativ bölmə (DECLARE -siz) • Məcburi işləyən bölmə • Istisnalar idarə etmək ücün könüllü bölmə Sadıgov Xəyyam
    5. 5. http://www.azeroug.org 5/ Anonym blokların ve Subprogramların fərqi nedi ? Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
    6. 6. http://www.azeroug.org 6/ Anonym blokların ve Subprogramların fərqi nedi ? Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
    7. 7. http://www.azeroug.org 7/ Subprogramlarin üstünlükləri Şənbə, 14 Sentyabr 2013 • Easy maintenance • Code Reuse • Improved data security • Improved performance • Improved code clarity Sadıgov Xəyyam
    8. 8. http://www.azeroug.org 8/ Procedure Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam CREATE [OR REPLACE] PROCEDURE procedure_name [(argument1 [mode1] datatype1, argument2 [mode2] datatype2, . . .)] [ AUTHID DEFINER | CURRENT_USER ] IS|AS procedure_body;
    9. 9. http://www.azeroug.org 9/ Procedure Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam ... CREATE TABLE dept AS SELECT * FROM departments; CREATE PROCEDURE add_dept IS v_dept_id dept.department_id%TYPE; v_dept_name dept.department_name%TYPE; BEGIN v_dept_id:=280; v_dept_name:='ST-Curriculum'; INSERT INTO dept(department_id,department_name) VALUES(v_dept_id,v_dept_name); DBMS_OUTPUT.PUT_LINE(' Inserted '|| SQL%ROWCOUNT ||' row '); END;
    10. 10. http://www.azeroug.org 10/ Procedure parameterler Şənbə, 14 Sentyabr 2013 • Formal və Faktiki • İN – read-only • OUT – write-only • İN OUT – read-write Sadıgov Xəyyam
    11. 11. http://www.azeroug.org 11/ Procedure Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
    12. 12. http://www.azeroug.org 12/ Invoking Procedures Şənbə, 14 Sentyabr 2013 Haradan proceduru execute ede bilersiz: – Anonim blok – Başqa procedur – Applicationdan • Oracle Job • Third-party application Note: proceduru SQL de istifade etmek olmaz. Sadıgov Xəyyam
    13. 13. http://www.azeroug.org 13/ Notation by name, by position Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
    14. 14. http://www.azeroug.org 14/ Function Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam CREATE [OR REPLACE] FUNCTION function_name [(argument1 [mode1] datatype1, argument2 [mode2] datatype2, . . .)] RETURN datatype [ AUTHID [ DEFINER | CURRENT_USER ]] IS|AS function_body;
    15. 15. http://www.azeroug.org 15/ Function Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam CREATE FUNCTION check_sal RETURN Boolean IS v_dept_id employees.department_id%TYPE; v_empno employees.employee_id%TYPE; v_sal employees.salary%TYPE; v_avg_sal employees.salary%TYPE; BEGIN v_empno:=205; SELECT salary,department_id INTO v_sal,v_dept_id FROM employees WHERE employee_id= v_empno; SELECT avg(salary) INTO v_avg_sal FROM employees WHERE department_id=v_dept_id; IF v_sal > v_avg_sal THEN RETURN TRUE; ELSE RETURN FALSE; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END;
    16. 16. http://www.azeroug.org 16/ Invoking a Function Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam BEGIN IF (check_sal IS NULL) THEN DBMS_OUTPUT.PUT_LINE('The function returned NULL due to exception'); ELSIF (check_sal) THEN DBMS_OUTPUT.PUT_LINE('Salary > average'); ELSE DBMS_OUTPUT.PUT_LINE('Salary < average'); END IF; END; /
    17. 17. http://www.azeroug.org 17/ Function Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam DROP FUNCTION check_sal; CREATE FUNCTION check_sal(p_empno employees.employee_id%TYPE) RETURN Boolean IS v_dept_id employees.department_id%TYPE; v_sal employees.salary%TYPE; v_avg_sal employees.salary%TYPE; BEGIN SELECT salary,department_id INTO v_sal,v_dept_id FROM employees WHERE employee_id=p_empno; SELECT avg(salary) INTO v_avg_sal FROM employees WHERE department_id=v_dept_id; IF v_sal > v_avg_sal THEN RETURN TRUE; ELSE RETURN FALSE; END IF; EXCEPTION ...
    18. 18. http://www.azeroug.org 18/ Invoking Function Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam BEGIN DBMS_OUTPUT.PUT_LINE('Checking for employee with id 205'); IF (check_sal(205) IS NULL) THEN DBMS_OUTPUT.PUT_LINE('The function returned NULL due to exception'); ELSIF (check_sal(205)) THEN DBMS_OUTPUT.PUT_LINE('Salary > average'); ELSE DBMS_OUTPUT.PUT_LINE('Salary < average'); END IF; DBMS_OUTPUT.PUT_LINE('Checking for employee with id 70'); IF (check_sal(70) IS NULL) THEN DBMS_OUTPUT.PUT_LINE('The function returned NULL due to exception'); ELSIF (check_sal(70)) THEN ... END IF; END; /
    19. 19. http://www.azeroug.org 19/ Restrictions on User-Defined Functions Şənbə, 14 Sentyabr 2013 Query və DML da işlənilen funkciyada olmaz: • OUT yada IN OUT parametler • Commit yada roll back • create a savepoint or roll back to a savepoint, • alter the session or the system. • DDL • Eyni tablicada deyişiklik etmek Amma • INSERT etmek (from SELECT statement) • INSERT from a subquery in a DML statement Sadıgov Xəyyam
    20. 20. http://www.azeroug.org 20/ Package Architecture Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
    21. 21. http://www.azeroug.org 21/ Package spec Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
    22. 22. http://www.azeroug.org 22/ Package body Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
    23. 23. http://www.azeroug.org 23/ Example Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
    24. 24. http://www.azeroug.org 24/ Execute Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
    25. 25. http://www.azeroug.org 25/ Advantages of PL/SQL Packages Şənbə, 14 Sentyabr 2013 • Modularity • Easier Application Design • Information Hiding • Added Functionality • Better Performance Sadıgov Xəyyam
    26. 26. http://www.azeroug.org 26/ Product-Specific Packages Şənbə, 14 Sentyabr 2013 • DBMS_ALERT • DBMS_OUTPUT • DBMS_PIPE • UTL_FILE • UTL_HTTP • UTL_SMTP Sadıgov Xəyyam
    27. 27. http://www.azeroug.org 27/ Drop Şənbə, 14 Sentyabr 2013 • Procedures • DROP PROCEDURE procedure_name • Function • DROP FUNCTION function_name • Package • DROP PACKAGE package_name Sadıgov Xəyyam
    28. 28. http://www.azeroug.org 28/ Data dictionary Şənbə, 14 Sentyabr 2013 • user_procedures • OBJECT_TYPE=‘PROCEDURE’ • OBJECT_TYPE=‘FUNCTION’ • OBJECT_TYPE=‘PACKAGE’ • user_source • TYPE=‘PROCEDURE’ • TYPE=‘FUNCTION’ • TYPE=‘PACKAGE’ • user_errors Sadıgov Xəyyam
    29. 29. http://www.azeroug.org 29/ Sizin suallarınız Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
    30. 30. http://www.azeroug.org 30/ Son Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam Sadıgov Xəyyam khsadigov@azerfon.az Mob: (070) 201 - 13 - 93 Skype: khsadigov

    ×