Pakiety podprogramów Dynamiczny SQL

Podobne dokumenty
Język PL/SQL Pakiety podprogramów

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Język PL/SQL Procedury i funkcje składowane

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Oracle PL/SQL. Paweł Rajba.

Procedury i funkcje składowane

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Język PL/SQL. Rozdział 4. Procedury i funkcje składowane

Podprogramy. Rozdział 11 Procedury i funkcje składowane

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

1 Wprowadzenie do bloków nazwanych 1. 2 Parametry 2. 3 Procedury i funkcje 3. 4 Pakiety 6. 5 Podsumowanie Źródła 10

PODSTAWY BAZ DANYCH 13. PL/SQL

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Procedury Funkcje Pakiety. Tworzenie procedury

Plan wykładu BAZY DANYCH II WYKŁAD 7. Pakiety. Zalety pakietów

Zaawansowane bazy danych i hurtownie danych semestr I

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Wykład 9. Pakiety w języku PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL

ZASTOSOWANIE PROCEDUR, FUNKCJI I PAKIETÓW

15. Funkcje i procedury składowane PL/SQL

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Bloki anonimowe w PL/SQL

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Tworzenie raportów XML Publisher przy użyciu Data Templates

Oracle11g: Programowanie w PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba.

PODSTAWY BAZ DANYCH. 17. Obiektowość w Oracle. 2009/2010 Notatki do wykładu "Podstawy baz danych"

Składowane procedury i funkcje

1. Wyzwalacze BD (ang. triggers)

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Oracle10g: Programowanie w PL/SQL

BAZA DANYCH SIECI HOTELI

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Ćwiczenie 13 PL/SQL. Język PL/SQL procedury, funkcje, pakiety, wyzwalacze

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL;

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba.

Tabele wykorzystywane w przykładach

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

BAZY DANYCH W APLIKACJACH SIECIOWYCH

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Październik Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż.

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

Technologie baz danych WYKŁAD 7: Wyjątki

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Plan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku

Oracle PL/SQL. Paweł Rajba.

Ćwiczenie 13 PL/SQL. Język PL/SQL procedury, funkcje, pakiety, wyzwalacze

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Hurtownia Świętego Mikołaja projekt bazy danych

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image)

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Indeksy. Indeks typu B drzewo

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL

Obowiązuje od wersji

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...

Cele. Definiowanie wyzwalaczy

Bazy danych, 4. wiczenia

Oracle Developer Suite. Budowa aplikacji użytkownika końcowego

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Deklarowanie kursora

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

Język PL/SQL. Rozdział 3. Obsługa błędów wykonania Wyjątki predefiniowane i użytkownika, zgłaszanie i obsługa wyjątków.

Modelowanie wymiarów

SQL 4 Structured Query Lenguage

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Obiektowe bazy danych

Plan wykładu BAZY DANYCH II WYKŁAD 8. Wyzwalacze. Wyzwalacze

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Język SQL, zajęcia nr 1

Struktura bazy danych

P o d s t a w y j ę z y k a S Q L

Instrukcja instalacji aplikacji PlanSoft.org

SYSTEM INFORMATYCZNY KS-SEW

Transkrypt:

Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL 1

Pakiety Pakiet (ang. package) grupuje powiązane logicznie typy, procedury, funkcje, zmienne i kursory. Składa się ze specyfikacji (interfejsu) i ciała (implementacji). W specyfikacji mieszczą się deklaracje typów, zmiennych, stałych, kursorów, wyjątków i podprogramów. W ciele mieści się implementacja specyfikacji. aplikacja specyfikacja ciało baza danych 2

Cele stosowania pakietów Cechy: modularność ukrycie informacji - użytkownikowi jest udostępniana tylko specyfikacja pakietu (interfejs), natomiast implementacja procedur i funkcji jest niewidoczna zwiększenie funkcjonalności - zmienne zadeklarowane w pakietach istnieją przez całą sesję użytkownika; dzięki temu mogą one służyć do wzajemnej komunikacji różnych procesów zwiększenie szybkości działania przy pierwszym odwołaniu do pakietu cała jego zawartość jest ładowana do pamięci współdzielenie przez wielu użytkowników możliwość zmiany implementacji pakietu bez konieczności rekompilacji modułów zależnych 3

Definiowanie pakietu CREATE [OR [OR REPLACE] PACKAGE nazwa_pakietu IS IS deklaracje stałych, zmiennych, kursorów dostępnych na na zewnątrz pakietu specyfikacja deklaracje procedur i i funkcji END [nazwa_pakietu]; CREATE [OR [OR REPLACE] PACKAGE BODY nazwa_pakietu IS IS deklaracje stałych, zmiennych, kursorów dostępnych wewnątrz pakietu ciało definicje procedur i i funkcji END [nazwa_pakietu]; 4

Inicjalizacja pakietu W momencie pierwszego odwołania do dowolnego elementu z pakietu zawartość całego pakietu zostaje załadowana do bufora. Zmienne i kursory mogą być inicjalizowane w części inicjalizacyjnej pakietu. CREATE [OR [OR REPLACE] PACKAGE BODY nazwa_pakietu IS IS l_name VARCHAR2(30), l_date_of_birth DATE, FUNCTION x(...) x(...) RETURN...;...;...... BEGIN l_name := :='Kowalski'; l_date_of_birth := := SYSDATE;...... END [nazwa_pakietu]; 5

Przykład pakietu CREATE OR OR REPLACE PACKAGE kadry AS AS PROCEDURE nowy_pracownik(p_nazwisko VARCHAR2); FUNCTION podatek(p_id_prac NUMBER) RETURN NUMBER; bledny_pracownik EXCEPTION; END kadry; CREATE OR OR REPLACE PACKAGE BODY kadry AS AS v_liczba_pracownikow NUMBER := := 0; 0; PROCEDURE nowy_pracownik(...) IS IS BEGIN...... END nowy_pracownik; FUNCTION podatek(...) RETURN NUMBER IS IS BEGIN...... END usun; END kadry; 6

Wywołanie procedury lub funkcji pakietu Zdefiniowaną w pakiecie procedurę lub funkcję wywołujemy poprzedzając jej nazwę nazwą pakietu, np. SQL> EXECUTE kadry.usun_pracownika(230) SQL> SELECT kadry.zl_na_usd(placa_pod) FROM pracownicy; Kompilowanie procedury, funkcji, pakietu ALTER PROCEDURE FUNCTION nazwa COMPILE; ALTER PACKAGE nazwa COMPILE PACKAGE BODY; Usuwanie procedury, funkcji, pakietu DROP PROCEDURE FUNCTION PACKAGE BODY PACKAGE nazwa; 7

Pragmy Pragmy (pseudoinstrukcje) to dyrektywy zawierające wskazówki dla kompilatora przetwarzane na etapie kompilacji. EXCEPTION_INIT: pozwala na przypisanie nazwanego wyjątku do błędu Oracle RESTRICT_REFERENCES: potwierdza i weryfikuje czystość funkcji, wymusza sprawdzenie czystości funkcji w stosunku do informacji podanych na etapie kompilacji AUTONOMOUS_TRANSACTION: pozwala na wykonanie podprogramu (procedury lub funkcji) w ramach oddzielnej transakcji 8

Przykład pragmy CREATE OR OR REPLACE PACKAGE place place AS AS FUNCTION podatek (p_id_prac NUMBER) RETURN NUMBER; PRAGMA RESTRICT_REFERENCES(podatek, WNDS, WNDS, RNDS, RNDS, WNPS); deadlock_detected EXCEPTION; END; END; CREATE OR OR REPLACE PACKAGE BODY BODY place place AS AS FUNCTION podatek (p_id_prac NUMBER) RETURN NUMBER IS IS PRAGMA AUTONOMOUS_TRANSACTION; PRAGMA EXCEPTION_INIT(deadlock_detected, -60); -60); BEGIN BEGIN -- --ciało funkcji funkcji EXCEPTION WHEN WHEN deadlock_detected THEN THEN -- --obsługa błędu błędu END END podatek;...... 9

Słownik bazy danych USER_OBJECTS - informacja o obiektach w schemacie użytkownika SELECT object_name, object_type, status FROM user_objects WHERE object_type IN IN ( PROCEDURE, FUNCTION, PACKAGE ); USER_SOURCE - kod źródłowy procedur, funkcji i pakietów użytkownika SELECT text text FROM user_source WHERE name = nazwa podprogramu ORDER BY BY line; line; 10

Dynamiczny SQL Dynamiczny SQL pozwala na konstruowanie i wykonywanie poleceń, których pełna treść nie jest znana w momencie kompilacji aplikacji, lecz dopiero w trakcie wykonywania programu. Dynamiczny SQL pozwala na: konstrukcję elastycznego kodu (np. procedury operującej na tablicy przekazanej jako parametr, dynamicznego tworzenia warunków w klauzuli WHERE) konstrukcję kodu wykonywalnego w trakcie działania programu wykonywanie w bloku PL/SQL instrukcji DDL (np. CREATE TABLE) oraz DCL (GRANT, ALTER SESSION) i instrukcji sterujących sesją, zabronionych w statycznym PL/SQL 11

Polecenie EXECUTE IMMEDIATE Polecenie EXECUTE IMMEDIATE przygotowuje (parsuje) i natychmiast wykonuje polecenie SQL bądź blok PL/SQL EXECUTE IMMEDIATE polecenie [[ INTO zmienna_1 [[,, zmienna_2,......]] rekord ]] [[ USING [[ IN IN OUT IN IN OUT ]] arg_wiązania_1 [[,,[[ IN IN OUT IN IN OUT ]] arg_wiązania_2 ]]...]] [[ RETURNING INTO arg_wiązania_3,......]];; polecenie to ciąg znaków zawierający polecenie SQL (bez średnika na końcu) zmienna_i to zmienna, do której zostaną wczytane wyniki zapytania arg_wiązania_i to wyrażenie, którego wartość jest przekazywana do polecenia 12

Przykład dynamicznego SQL (1) DECLARE sql_stmt VARCHAR2(100); bnd_id_zesp NUMBER(2) := := 60; 60; bnd_nazwa VARCHAR2(5) := :='KADRY'; bnd_adres VARCHAR2(25) := :='SKLODOWSKIEJ-CURIE 1'; 1'; prac_rec pracownicy%rowtype; BEGIN BEGIN sql_stmt := :='INSERT INTO INTOzespoly VALUES (:1, (:1,:2, :2,:3)'; :3)'; EXECUTE IMMEDIATE sql_stmt USING USING bnd_id_zesp, bnd_nazwa, bnd_adres; sql_stmt := :='SELECT ** FROM FROM pracownicy WHERE id_prac = :id'; :id'; EXECUTE IMMEDIATE sql_stmt INTO INTO prac_rec USING USING 100; 100; DBMS_OUTPUT.PUT_LINE(prac_rec.nazwisko ''--' ' prac_rec.etat); END; END; 13

Przykład dynamicznego SQL (2) DECLARE sql_stmt VARCHAR2(100); BEGIN BEGIN EXECUTE IMMEDIATE 'CREATE TABLE TABLEbonus (id (id NUMBER, wartosc NUMBER)'; sql_stmt := := 'ALTER SESSION SET SET NLS_DATE_FORMAT=''DAY MONTH YYYY'' YYYY'' '; '; EXECUTE IMMEDIATE sql_stmt; END; END; 14