Azer oug sadigov xayyam

30
Sadıqov Xəyyam Prosedurlar, Funksiyalar və Paketler http:// www.azeroug.org Tarix 14.09.2013

description

 

Transcript of Azer oug sadigov xayyam

Page 1: Azer oug sadigov xayyam

Sadıqov XəyyamProsedurlar, Funksiyalar və Paketler

http://www.azeroug.org

Tarix 14.09.2013

Page 2: Azer oug sadigov xayyam

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

http://www.azeroug.org

3/

PL/SQL

Şənbə, 14 Sentyabr 2013

Sadıgov Xəyyam

Page 4: Azer oug sadigov xayyam

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

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

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

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

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

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

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

http://www.azeroug.org

11/

Procedure

Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam

Page 12: Azer oug sadigov xayyam

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

http://www.azeroug.org

13/

Notation by name, by position

Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam

Page 14: Azer oug sadigov xayyam

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

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

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

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

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

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

http://www.azeroug.org

20/

Package Architecture

Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam

Page 21: Azer oug sadigov xayyam

http://www.azeroug.org

21/

Package spec

Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam

Page 22: Azer oug sadigov xayyam

http://www.azeroug.org

22/

Package body

Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam

Page 23: Azer oug sadigov xayyam

http://www.azeroug.org

23/

Example

Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam

Page 24: Azer oug sadigov xayyam

http://www.azeroug.org

24/

Execute

Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam

Page 25: Azer oug sadigov xayyam

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

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

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

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

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

http://www.azeroug.org

30/

Son

TƏŞƏKKÜRLƏRAZEROUG

Şənbə, 14 Sentyabr 2013 Sadıgov Xəyyam

Sadıgov Xəyyam

[email protected]

Mob: (070) 201 - 13 - 93Skype: khsadigov