azer oug sadigov xayyam
DESCRIPTION
TRANSCRIPT
![Page 1: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/1.jpg)
Sadıqov XəyyamProsedurlar, Funksiyalar və Paketler
http://www.azeroug.org
Tarix 14.09.2013
![Page 2: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/2.jpg)
http://www.azeroug.org
2/
Özüm haqqda
Şənbə, 14 Sentyabr 2013
Sadıqov XəyyamAzerfon LLC
Billing and VAS Engineer SQL and PL/SQL Trainer
Sadıgov Xəyyam
![Page 3: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/3.jpg)
http://www.azeroug.org
3/
PL/SQL
Şənbə, 14 Sentyabr 2013
Sadıgov Xəyyam
![Page 4: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/4.jpg)
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
![Page 5: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/5.jpg)
http://www.azeroug.org
5/
Anonym blokların ve Subprogramların fərqi nedi ?
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
![Page 6: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/6.jpg)
http://www.azeroug.org
6/
Anonym blokların ve Subprogramların fərqi nedi ?
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
![Page 7: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/7.jpg)
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
![Page 8: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/8.jpg)
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|ASprocedure_body;
![Page 9: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/9.jpg)
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;
![Page 10: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/10.jpg)
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
![Page 11: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/11.jpg)
http://www.azeroug.org
11/
Procedure
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
![Page 12: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/12.jpg)
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
![Page 13: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/13.jpg)
http://www.azeroug.org
13/
Notation by name, by position
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
![Page 14: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/14.jpg)
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|ASfunction_body;
![Page 15: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/15.jpg)
http://www.azeroug.org
15/
Function
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
CREATE FUNCTION check_sal RETURN Boolean ISv_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;
![Page 16: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/16.jpg)
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;/
![Page 17: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/17.jpg)
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 ...
![Page 18: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/18.jpg)
http://www.azeroug.org
18/
Invoking Function
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
BEGINDBMS_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;/
![Page 19: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/19.jpg)
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
![Page 20: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/20.jpg)
http://www.azeroug.org
20/
Package Architecture
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
![Page 21: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/21.jpg)
http://www.azeroug.org
21/
Package spec
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
![Page 22: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/22.jpg)
http://www.azeroug.org
22/
Package body
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
![Page 23: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/23.jpg)
http://www.azeroug.org
23/
Example
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
![Page 24: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/24.jpg)
http://www.azeroug.org
24/
Execute
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
![Page 25: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/25.jpg)
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
![Page 26: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/26.jpg)
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
![Page 27: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/27.jpg)
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
![Page 28: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/28.jpg)
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
![Page 29: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/29.jpg)
http://www.azeroug.org
29/
S&C
Sizin suallarınız
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
![Page 30: Azer oug sadigov xayyam](https://reader035.vdocuments.site/reader035/viewer/2022081414/54ba71e64a7959092e8b4568/html5/thumbnails/30.jpg)
http://www.azeroug.org
30/
Son
TƏŞƏKKÜRLƏRAZEROUG
Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam
Sadıgov Xəyyam
Mob: (070) 201 - 13 - 93Skype: khsadigov