MagnusArias

BD | procedure

May 30th, 2016
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 8.43 KB | None | 0 0
  1. Ćwiczenie 1.
  2. Utwórz i uruchom procedurę o nazwie daneKlientow wyświetlającą dane klientów z bazy BazaRelacyjna. Za pomocą
  3. odpowiedniego polecenia usuń tą procedurę.
  4. Ćwiczenie 2.
  5. Utwórz procedurę o nazwie wyszukajKlientow, wyszukującą klientów o nazwisku rozpoczynającym się na daną literę
  6. podaną jako parametr procedury. Utwórz analogiczną procedurę, ale pozwalającą na przekazanie zamiast litery
  7. dowolnego łańcucha znakowego, od którego powinno zaczynać się nazwisko klienta.
  8. Ćwiczenie 3.
  9. Zmodyfikuj procedurę o nazwie wyszukajKlientow, utworzoną w ćwiczeniu 2 tak, aby wyszukiwała klientów o nazwisku
  10. rozpoczynającym się na daną literę podaną jako parametr procedury, wyświetlającą tylko imię, nazwisko i nazwę miasta,
  11. z którego pochodzi klient.
  12. Ćwiczenie 4.
  13. Utwórz procedurę o nazwie nowiPracownicy, za pomocą której będzie tworzona tabela o nazwie Pracownicy. Procedura po
  14. utworzeniu tabeli powinna umieścić w niej dane pracowników: imie i nazwisko pracownika oraz nazwę działu, w jakim
  15. pracuje. Na koniec procedura ta wyświetli 20 pierwszych rekordów z nowoutworzonej tabeli, ostatnią kolumnę
  16. wyświetlając jako nazwa działu(Jak powinien wyglądać alias dla tej nazwy kolumny?).
  17. Ćwiczenie 5.
  18. Utwórz procedurę, która wyliczy i zwróci w postaci parametru wyjściowego maksymalny zarobek pracowników( należy
  19. zadeklarować parametr wyjściowy w procedurze). Wykorzystaj utworzoną procedurę do wyświetlenia łańcucha
  20. znakowego ‘Maksymalny zarobek TO, wraz z wartością zadeklarowanej zmiennej. (Przed wywołaniem procedury
  21. zadeklaruj zmienną wyjściową, wykorzystaj funkcję PRINT do wyświetlenia łańcucha znakowego wraz z wartością
  22. zmiennej, CAST wykorzystaj do zmiany typu wartości zmiennej na VARCHAR).
  23. Ćwiczenie 6.
  24. Utwórz procedurę, która obliczy liczbę osób o wzroście powyżej wartości przekazanej jako parametr do procedury,
  25. utwórz zmienną o nazwie liczbaOsob, przekaż do niej wyliczoną przez procedurę liczbę i wyświetl jej wartość.
  26. Ćwiczenie 7.
  27. Utwórz procedurę, która pobierze bieżącą datę i czas i zwróci wartości w postaci roku, miesiąca i dnia. Za pomocą
  28. zmiennych wyświetl datę w postaci: dzień miesiąc rok(np. 20 kwiecień 2015). Miesiąc powinien BYć wyświetlony w
  29. postaci nazwy miesiąca w języku polskim(wykorzystaj do ustawienia nazwy miesiąca CASE WHENTHENELSE)
  30. Ćwiczenie 8.
  31. Utwórz tabelę o nazwie Pracownik z kolumnami: imie, nazwisko, dzial. Utwórz procedurę o nazwie wstawPracownika,
  32. która pozwoli na wstawianie danych do tej tabeli. Za jej pomocą wstaw kilka rekordów do nowej tabeli. Sprawdź, czy za
  33. pomocą procedury rekord został dodany do tabeli Pracownik(SELECT). Usuń nową tabelę.
  34. Ćwiczenie 9.
  35. Utwórz tabelę o nazwie Pracownik. Za pomocą procedury przenieś do niej dane pracowników zatrudnionych w dziale
  36. Handlowy zarabiających powyżej 3500: imię, nazwisko, nazwę działu i wysokość wynagrodzenia. Pobierz dane z nowej
  37. tabeli Pracownik.
  38. Ćwiczenie 10.
  39. Utwórz tabelę n_Zarobki przenosząc do niej za pomocą polecenia SELECT INTO dane z tabeli Zarobki. Utwórz procedurę,
  40. która pobierze średnie wynagrodzenie oraz podniesie wynagrodzenia wszystkim pracownikom o 20%, jeśli średnie
  41. zarobki są niższe niż 3000 lub obniży o 20%, jeśli są wyższe lub równe 3000. (wykorzystaj funkcję AVG oraz dane z tabeli
  42. n_Zarobki, a także instrukcję IF - ELSE)
  43.  
  44.  
  45.  
  46. CREATE PROCEDURE pobierzOsoby AS
  47.     SELECT * FROM Osoby;
  48. GO
  49. EXEC pobierzOsoby
  50. GO
  51.  
  52. CREATE PROCEDURE pobierzOsobe @id INT AS
  53.     SELECT * FROM Osoby WHERE idOsoby = @id;
  54. GO
  55. EXEC pobierzOsobe 5;
  56. GO
  57.  
  58. CREATE PROCEDURE pobierzOsobe2 @imie VARCHAR(20), @rok INT AS
  59.     SELECT * FROM Osoby WHERE Imie = @imie AND RokUrodz = @rok;
  60. GO
  61. EXEC pobierzOsobe2 'XENIA', 1974;
  62. GO
  63.  
  64. ALTER PROCEDURE pobierzOsobe2 @iddzial INT, @rok INT AS
  65.     SELECT * FROM Osoby WHERE idDzialu = @iddzial AND RokUrodz = @rok;
  66. GO
  67. EXEC pobierzOsobe2 4, 1947
  68. DROP PROCEDURE pobierzOsobe
  69.  
  70. CREATE PROCEDURE #pobierz10OSob AS
  71.     SELECT top 10 * FROM BAzaRelacyjna.dbo.Osoby;
  72. GO
  73. EXEC #pobierz10Osob
  74. GO
  75.  
  76. ALTER PROCEDURE #pobierz10Osob
  77. AS
  78.     SELECT top 10 Nazwisko, Imie FROM BazaRelacyjna.dbo.Osoby;
  79. GO
  80. DROP PROCEDURE #pobierz10Osob
  81.  
  82.  
  83. CREATE PROCEDURE pobierzMaxZarobek @rokWyplaty INT, @wynik money OUTPUT
  84. AS
  85.     SELECT @wynik = MAX(brutto) FROM Zarobki
  86.     WHERE YEAR(DataWyplaty) = @rokWyplaty;
  87. GO
  88.  
  89. DECLARE @wynik money;
  90. EXEC pobierzMaxZarobek 2003, @wynik OUTPUT
  91. print @wynik;
  92.  
  93.  
  94. ALTER PROCEDURE pobierzWartosc @nazwa VARCHAR(30), @wynik money OUTPUT
  95. AS
  96.     BEGIN
  97.     DECLARE @cena money;
  98.     SELECT @cena = MAX(Cena) FROM Towar
  99.     WHERE NazwaTowaru LIKE @nazwa;
  100.     SET @wynik = @cena+100;
  101.     END
  102.  
  103.     print @wynik;
  104. GO
  105.  
  106. DECLARE @wynik INT;
  107. EXEC pobierzWartosc 'W%', @wynik output;
  108.  
  109. SELECT CAST(14.85 AS INT); /* i tak dalej */
  110. SELECT CONVERT(VARCHAR(19), getdate())
  111. SELECT CONVERT(VARCHAR(10), getdate(), 10)
  112. SELECT CONVERT(VARCHAR(10), getdate(), 110)
  113. SELECT CONVERT(VARCHAR(10), getdate(), 6)
  114.  
  115. DECLARE @liczba INT;
  116. SET @liczba = 4;
  117.  
  118. IF @liczba > 5
  119.     BEGIN
  120.         print 'da'
  121.     END
  122.     ELSE
  123.  print 'niet';
  124.  
  125.  
  126.  
  127.  
  128.  Ćw 1
  129.  CREATE PROCEDURE daneKlientow
  130.  AS
  131.     SELECT * FROM Klienci;
  132. GO
  133. EXEC daneKlientow
  134. GO
  135. DROP PROCEDURE daneKlientow
  136.  
  137. Ćw 2
  138. CREATE PROCEDURE wyszukajKlientow @nazw CHAR
  139. AS
  140.     SELECT * FROM Klienci
  141.     WHERE Nazwisko LIKE @nazw+'%';
  142. GO
  143. EXEC wyszukajKlientow 'P%';
  144. GO
  145.  
  146. Ćw 3
  147. ALTER PROCEDURE wyszukajKlientow @nazw CHAR
  148. AS
  149.     SELECT k.Nazwisko, k.Imie, m.Miasto FROM Klienci k
  150.     JOIN Miasta m ON m.IdMiasta = k.IdMiasta
  151.     WHERE Nazwisko LIKE @nazw+'%';
  152. GO
  153.  
  154. Ćw 4
  155. CREATE PROCEDURE nowiPracownicy AS
  156. BEGIN
  157.     DECLARE @Pracownicy TABLE(
  158.         imie VARCHAR(20),
  159.         nazwisko VARCHAR(20),
  160.         nazwaDzialu VARCHAR(30)
  161.     )
  162.  
  163.     INSERT INTO @Pracownicy
  164.     SELECT o.Nazwisko, o.Imie, d.Opis FROM Osoby o
  165.     JOIN Dzialy d ON d.IdDzialu = o.IdDzialu;
  166.  
  167.    
  168.     SELECT top 20 imie, nazwisko, nazwaDzialu [nazwa dzialu] FROM @Pracownicy;
  169.     END
  170. GO
  171.  
  172. EXEC nowiPracownicy
  173. GO
  174.  
  175. Ćw 5
  176. CREATE PROCEDURE wyliczZarobek @wynik money OUTPUT AS
  177.  
  178.     SELECT @wynik = MAX(Brutto) FROM Zarobki
  179.  
  180. GO
  181.  
  182. DECLARE @wynik money;
  183. EXEC wyliczZarobek @wynik OUTPUT
  184. print 'Maksymalny zarobek to ' + CAST(@wynik AS VARCHAR);
  185. GO
  186.  
  187. Ćw 6
  188. CREATE PROCEDURE podajIleWzrost  @maxWzrost DECIMAL(3,2), @liczbaOsob INT OUTPUT AS
  189.     SELECT @liczbaOsob = COUNT(Wzrost) FROM Osoby WHERE Wzrost > @maxWzrost;
  190. GO
  191.  
  192. DECLARE @liczba INT;
  193. EXEC podajIleWzrost 1.80, @liczba OUTPUT;
  194. print @liczba;
  195. GO
  196.  
  197. Ćw 7
  198. CREATE PROCEDURE pobierzDate @mc VARCHAR(20) OUTPUT, @dzien INT OUTPUT, @rok INT OUTPUT
  199. AS
  200.     BEGIN
  201.     DECLARE @mcint INT;
  202.         SELECT  @dzien = DAY(getdate()),
  203.                 @mcint = MONTH(getdate()),
  204.                 @rok = YEAR(getdate());
  205.                
  206.     SET @mc = CASE @mcint
  207.         WHEN 1 THEN 'styczeń'
  208.         WHEN 2 THEN 'luty'
  209.         WHEN 3 THEN 'marzec'
  210.         WHEN 4 THEN 'kwiecień'
  211.         WHEN 5 THEN 'maj'
  212.         WHEN 6 THEN 'czerwiec'
  213.         WHEN 7 THEN 'lipiec'
  214.         WHEN 8 THEN 'sierpien'
  215.         WHEN 9 THEN 'wrzesień'
  216.         WHEN 10 THEN 'październik'
  217.         WHEN 11 THEN 'listopad'
  218.         WHEN 12 THEN 'grudzień'
  219.         ELSE 'neiznany'
  220.     END;
  221. END
  222. GO
  223.  
  224. DECLARE @mc VARCHAR(20);
  225. DECLARE @dzien INT;
  226. DECLARE @rok INT;  
  227. EXEC pobierzDate @mc OUTPUT, @dzien OUTPUT, @rok OUTPUT
  228. print CAST(@dzien AS VARCHAR) + ' ' + @mc + ' ' +CAST(@rok AS VARCHAR)
  229. GO
  230.  
  231. Ćw 8
  232. CREATE TABLE Pracownik
  233. (
  234.     imie VARCHAR(20),
  235.     nazwisko VARCHAR(20),
  236.     dzial VARCHAR(20)
  237. )
  238.  
  239. CREATE PROCEDURE wstawPracownika @imie VARCHAR(20), @nazwisko VARCHAR(20), @dzial VARCHAR(20) AS
  240.     INSERT INTO Pracownik VALUES (@imie, @nazwisko, @dzial);
  241. GO
  242.  
  243. EXEC wstawPracownika 'anyszka', 'michal', 'cycuszki'
  244. GO
  245.  
  246. SELECT * FROM Pracownik
  247.  
  248. Ćw. 9
  249. CREATE TABLE Pracownik
  250. (
  251.     imie VARCHAR(40),
  252.     nazwisko VARCHAR(40),
  253.     dzial VARCHAR(40),
  254.     zaorbki money
  255. )
  256.  
  257. CREATE PROCEDURE wstawPracownikow AS
  258. INSERT INTO Pracownik
  259. SELECT o.Imie, o.Nazwisko, d.Opis, z.Brutto
  260. FROM Osoby o
  261. JOIN Dzialy d ON d.IdDzialu = o.IdDzialu
  262. JOIN Zarobki z ON z.IdOsoby = o.IdOsoby
  263. WHERE d.Opis ='Handlowy' AND z.Brutto > 3500;
  264. GO
  265.  
  266. EXEC wstawPracownikow
  267. GO
  268.  
  269. SELECT *FROM Pracownik;
  270.  
  271. DROP TABLE Pracownik;
  272. DROP PROCEDURE wstawPracownikow;
  273.  
  274.  
  275.  
  276. Ćw. 10
  277. SELECT * INTO n_Zarobki FROM Zarobki;
  278. SELECT * FROM n_Zarobki;
  279.  
  280. CREATE PROCEDURE aktualizujZarobki
  281. AS
  282. IF (SELECT avg(z.Brutto) AS 'Średnia zarobków' FROM n_zarobki z) <  3000
  283.     BEGIN
  284.         UPDATE n_Zarobki SET Brutto=Brutto*1.2;
  285.     END;
  286. ELSE
  287.     BEGIN
  288.         UPDATE n_Zarobki SET Brutto=Brutto*0.8;
  289.     END;
  290. GO
  291.  
  292. EXEC aktualizujZarobki
  293. GO
  294.  
  295. SELECT avg(z.Brutto) AS 'Średnia zarobków' FROM n_Zarobki z
Add Comment
Please, Sign In to add comment