cw 14 Procedury sk艂adowane i funkcje簔odanowe


0x01 graphic

TWORZENIE PROCEDUR SK艁ADOWANYCH I FUNKCJI BAZODANOWYCH

Z WYKORZYSTANIEM NARZ臉DZIA

MS SQL SERVER

Warszawa 2007

Spis tre艣ci

1. Wprowadzenie

  1. Wprowadzenie

Procedury sk艂adowane s膮 obiektami zapewniaj膮cymi realizacj臋 ci膮gu zdefiniowanych w procedurze operacji w ramach jednego prostego wywo艂ania. Pozwalaj膮 na budowanie z艂o偶onych (cz臋sto zagnie偶d偶onych struktur programistycznych), a potem wywo艂ywanie ich w dowolnych miejscach programu. Umo偶liwia to tworzenie r贸wnie偶 takich struktur, kt贸re wykonuj膮 kilka r贸偶nych operacji w ramach uruchomienia jednej procedury.

Funkcje bazodanowe, podobnie jak procedury sk艂adowane, s膮 obiektami umieszczonymi na serwerze bazy danych. Posiadaj膮 jednak par臋 dodatkowych cech, kt贸rymi odr贸偶niaj膮 si臋 od procedur, a znacznie u艂atwiaj膮 przeprowadzanie ca艂ego szeregu tworz膮cych je operacji.

Procedury sk艂adowane tworzymy podobnie jak skrypty sql, ale dzia艂aj膮 one znacznie szybciej ni偶 taki sam skrypt. Dzieje si臋 tak, poniewa偶 SQL Server przy ka偶dym uruchamianiu skryptu musi wykona膰:

Za ka偶dym razem, gdy wykonywany jest skrypt SQL, wszystkie powy偶sze operacje s膮 realizowane podczas jego uruchomienia. Procedura sk艂adowana jest z definicji sprawdzana przez kompilator podczas jej tworzenia, a plan zapytania jest tworzony automatycznie przy jej pierwszym uruchomieniu. Tak wi臋c dodatkowym atutem procedur sk艂adowanych jest szybko艣膰 ich dzia艂ania w stosunku do skrypt贸w.

Poni偶sze 膰wiczenia umo偶liwi膮 zapoznanie si臋 ze sk艂adni膮 procedur i funkcji sk艂adowanych w MS SQL Server.

  1. Procedury sk艂adowane

    1. Wprowadzenie

Procedury sk艂adowane s膮 zbiorami instrukcji j臋zyka SQL zapisanymi pod wsp贸ln膮 nazw膮 i wywo艂ywanymi jak pojedyncza instrukcja. Procedury sk艂adowane umo偶liwiaj膮:

Procedury sk艂adowane s膮 podstaw膮 przy tworzeniu warstwy bazodanowej system贸w informatycznych. S膮 powszechnie u偶ywane w celu:

Wewn膮trz procedury mo偶emy umieszcza膰 dowolne instrukcje SQL. Dzi臋ki temu mo偶na stworzy膰 standardow膮 procedur臋, kt贸ra zapewni realizacj臋 okre艣lonych operacji, np. nada uprawnienia okre艣lonemu u偶ytkownikowi albo usunie u偶ytkownika i zapisy z nim zwi膮zane z bazy danych. Takie grupowanie operacji usprawni obs艂ug臋 bazy danych i stworzy standardowe podprogramy, kt贸re b臋d膮 mo偶liwe do wielokrotnego wykorzystania w r贸偶nych typach zastosowa艅. Wywo艂anie procedury z wn臋trza programu spowoduje automatyczne pobranie przez ni膮 danych wej艣ciowych i wykonanie wszystkich operacji, kt贸re zosta艂y w niej zapisane.

Ka偶da procedura sk艂ada si臋 z nazwy oraz parametr贸w, dzi臋ki kt贸rym komunikuje si臋 z programem. Aby utworzy膰 procedur臋 sk艂adowan膮 wystarczy wstawi膰 blok instrukcji w szablon tworz膮cy procedur臋 sk艂adowan膮: CREATE PROCEDURE.

    1. Zadanie 1

Przygotowa膰 procedur臋 sk艂adowan膮, kt贸rej zadaniem jest wprowadzenie tabel: Jezyki oraz PracJezyki do bazy danych Kadry oraz wygenerowanie relacji pomi臋dzy tabelami Pracownicy -> PracJezyki i Jezyki -> PracJezyki.

Tabela Jezyki sk艂ada si臋 z jednego pola, kt贸re jest jednocze艣nie kluczem podstawowym, o nazwie Jezyk. Pole to b臋dzie przechowywa艂o nazwy wszystkich mo偶liwych j臋zyk贸w, jakimi pos艂uguj膮 si臋 pracownicy firmy.

Tabela PracJezyki sk艂ada si臋 z trzech p贸l: idPracJezyki (pole - klucz podstawowy tabeli), idPrac (numer pracownika), Jezyk (nazwa jezyka) oraz Poziom (poziom umiej臋tno艣ci w pos艂ugiwaniu si臋 j臋zykiem).

    1. Wykonanie zadania 1

0x08 graphic
0x01 graphic

Rys. 1 Tworzenie nowej procedury sk艂adowanej

0x01 graphic

Rys. 2 Szablon procedury sk艂adowanej

0x01 graphic

Rys. 3 Tre艣膰 procedury sk艂adowanej Tworzenie_Tabel

0x08 graphic
0x01 graphic

Rys. 4 Utworzona procedura sk艂adowana w folderze Stored Procedures

0x08 graphic
0x01 graphic

Rys. 5 Uruchamianie procedury sk艂adowanej

UWAGA! Przy ponownym uruchomieniem procedury trzeba z folderu Tables usun膮膰 najpierw tabel臋 PracJezyki, a nast臋pnie tabel臋 Jezyki.

0x08 graphic

0x08 graphic
0x01 graphic

Rys. 6 Nowe tabele na li艣cie bazy danych Kadry

0x08 graphic
0x08 graphic
0x01 graphic

Rys. 7 Uaktualniona struktura bazy danych Kadry

    1. Zadanie 2

Przygotowa膰 procedur臋 sk艂adowan膮, kt贸rej zadaniem jest wprowadzenie do tabel Jezyki i PracJezyki nowych rekord贸w.

    1. Wykonanie zadania 2

0x01 graphic
0x01 graphic

Rys. 8 Tre艣膰 procedury Wprowadzanie_danych

0x01 graphic

Rys. 9 Uruchamianie procedury Wprowadzanie_danych

    1. Zadanie 3

Przygotowa膰 procedur臋 sk艂adowan膮, kt贸rej zadaniem jest wy艣wietlenie informacji o pracownikach i ich umiej臋tno艣ci pos艂ugiwania si臋 j臋zykami posortowanych wed艂ug nazw jednostek organizacyjnych (miejsca zatrudnienia pracownik贸w) i wed艂ug nazwisk pracownik贸w.

    1. Wykonanie zadania 3

0x01 graphic

Rys. 10 Tre艣膰 procedury Pracownicy_Jezyki

0x01 graphic

Rys. 11 Wynik dzia艂ania procedury Pracownicy_Jezyki

    1. Zadanie 4

Przygotowa膰 procedur臋 sk艂adowan膮, kt贸rej zadaniem jest wyszukanie informacji o pracownikach, kt贸rzy pos艂uguj膮 si臋 konkretnym j臋zykiem (j臋zyk to parametr procedury) na okre艣lonym poziomie (poziom to parametr procedury).

    1. Wykonanie zadania 4

0x01 graphic

Rys. 12 Tre艣膰 procedury z parametrem Jezyk_Poziom

0x08 graphic
0x01 graphic

Rys. 13 Wprowadzanie warto艣ci parametr贸w procedury

0x01 graphic

Rys. 14 Okno wynik贸w procedury Jezyki_Poziom

    1. Zadanie 5

Przygotowa膰 procedur臋 sk艂adowan膮, kt贸rej zadaniem jest udzielenie podwy偶ki (wysoko艣膰 podwy偶ki to parametr) wszystkim pracownikom pos艂uguj膮cym si臋 w stopniu dobrym lub bardzo dobrym wskazanym j臋zykiem (nazwa j臋zyka to parametr).

    1. Wykonanie zadania 5

0x01 graphic

Rys. 15 Tre艣膰 procedury z parametrem Podwyzka

0x01 graphic

Rys. 16 Parametry procedury Podwyzka

0x08 graphic
0x08 graphic
0x01 graphic

Rys. 17 Wyniki dzia艂ania procedury Podwyzka

  1. Funkcje bazodanowe

    1. Wprowadzenie

Funkcje bazodanowe, kt贸re u偶ytkownik sam mo偶e zdefiniowa膰, a nast臋pnie wywo艂ywa膰 je w obr臋bie r贸偶nych skrypt贸w i podprogram贸w mo偶na podzieli膰 na trzy typy:

Funkcje tabelaryczne rozwijane (ang. inline table-valued) zwracaj膮 dane w postaci tabeli. Mo偶na ich u偶ywa膰 zamiast widok贸w (ang. views). Maj膮 t臋 przewag臋 nad widokami, 偶e umo偶liwiaj膮 przekazanie parametru do funkcji.

Funkcje tabelaryczne wielowierszowe (ang. multi-statement table-valued) to najbardziej zaawansowany rodzaj funkcji u偶ytkownika. Podobnie jak funkcje tabelaryczne rozwijane zwracaj膮 dane w postaci tabeli, jednak pozwalaj膮 na bardziej skomplikowany spos贸b tworzenia zwracanego zestawu danych. W funkcji tego typu najpierw deklaruje si臋 struktur臋 zwracanej tabeli. Nast臋pnie, aby zbudowa膰 zwracan膮 tabel臋, mo偶na u偶y膰 dowolnych instrukcji Transact SQL, oczywi艣cie z wyj膮tkiem funkcji wbudowanych - niedost臋pnych dla funkcji u偶ytkownika. Zadeklarowan膮 struktur臋 tabeli traktuje si臋 tak, jak ka偶d膮 inn膮 tabel臋 bazy danych i dodaje si臋 do niej kolejne rekordy za pomoc膮 instrukcji INSERT.

Funkcje skalarne (ang. Scalar) zwracaj膮 pojedyncz膮 warto艣膰, kt贸ra mo偶e by膰 dowolnego typu obs艂ugiwanego przez MS SQL Server. Funkcje te znajduj膮 zastosowanie np. w ograniczeniach sprawdzaj膮cych (CHECK CONSTRAINT).

    1. Zadanie 1

Przygotowa膰 funkcj臋, kt贸ra zmieni uk艂ad daty ze standardowego formatu: rrrr-mm-dd hh:mm:ss na format niestandardowy: dd-mm-rrrr. Parametrem funkcji powinien by膰 separator daty (dopuszczalny dowolny znak, np. `-`, `:', `/') oraz sama data, kt贸ra podlega formatowaniu. Zastosowa膰 t臋 funkcj臋 do przeformatowania p贸l DataUrP i DataZatP w tabeli Pracownicy.

    1. Wykonanie zadania 1

0x08 graphic
0x01 graphic

Rys. 18 Tworzenie funkcji tabelarycznej rozwijanej

0x01 graphic

Rys. 19 Tre艣膰 funkcji Format_Daty

0x08 graphic
0x01 graphic

Rys. 20 Folder funkcji bazodanowych

0x08 graphic
0x08 graphic
0x01 graphic

Rys. 21 Formatowanie pola DataUrP w tabeli Pracownicy

0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic

Rys. 22 Formatowanie pola DataRoz w tabeli Projekty

    1. Zadanie 2

Przygotowa膰 funkcj臋 bazodanow膮, kt贸ra wyznaczy liczb臋 pracownik贸w pos艂uguj膮cych si臋 na poszczeg贸lnych poziomach umiej臋tno艣ci poszczeg贸lnymi j臋zykami.

    1. Wykonanie zadania 2

0x01 graphic

Rys. 23 Tworzenie funkcji tabelarycznej wielowierszowej

0x01 graphic

Rys. 24 Tre艣膰 funkcji Liczba_PracJezyk

0x08 graphic
0x08 graphic
0x01 graphic

Rys. 25 Wywo艂anie funkcji Liczba_PracJezyki

    1. Zadanie 3

Przygotowa膰 funkcj臋 bazodanow膮, kt贸ra policzy ile czasu up艂yn臋艂o pomi臋dzy wskazanymi datami. Daty s膮 parametrami funkcji. Je偶eli pomi臋dzy datami up艂yn臋艂o ponad 365 dni to wynik podawany jest w latach, a w przeciwnym wypadku wynik jest wyznaczany w dniach.

    1. Wykonanie zadania 3

0x01 graphic

Rys. 26 Tworzenie funkcji skalarnej

0x01 graphic

Rys. 27 Tre艣膰 funkcji Jak_Dlugo

0x01 graphic

Rys. 28 Zastosowanie funkcji w tabeli Projekty

0x08 graphic
0x01 graphic

Rys. 29 Zastosowanie funkcji w tabeli Pracownicy

  1. Zadanie do wykonania

Przygotowa膰 procedury sk艂adowane i funkcje bazodanowe dla swojego projektu. Zadanie stanowi element oceniany.

dr in偶. T. Ostrowska, dr in偶. K. Rostek Zak艂ad System贸w Informatycznych

IOSP PW Bazy Danych - laboratorium

cw 13-14 Procedury sk艂adowane i funkcje bazodanowe, 2007-09-25



Wyszukiwarka

Podobne podstrony:
Controlling 膰w 14 10 27
SPRAWOZDANIE CW 14, Semestr 1, Fizyka
膰w 14 sprawozdanie I
膯w-8 14.04.2008, studia, Ortopedia, 膯wiczenia
cw 14, m.szpaner, Semestr IV, Fizyka, Sprawozdania Fizyka
膰w.14, Fizyka, Skrypt do Laborek
postepow adm cw 14.04.05, post臋powanie administracyjne(8), cw
MO 膰w 14(1)
cad 1 I Cw 14 2013 id 107655 Nieznany
cw.14
prawo cw 14 edu
cw 14
膯w. 14, chemia fizyczna, Nowy folder
parazyty 膰w 14, Parazytologia
opracowanie 膰w 14, Onedrive ca艂o艣膰, Rok I, II sem, Psychologia emocji i motywacji, Streszczenia
膯w 1 14.02.2008, studia, Kinezyterapia, 膯wiczenia
cw 14 - statystyka przyklad, biotechnologia in偶, sem3, BiB, 膰wiczenia, zestawy
cw 14

wi臋cej podobnych podstron