Advertisement
Guest User

SQL

a guest
Apr 21st, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. --ZADANIE 1.
  2. --Napisać program, który wyświetli wszystkie liczby z zakresu od 50 do 100. Jeżeli liczba jest podzielna przez 5 to wypisze stosowną informację.
  3.  
  4. declare
  5. @liczba int
  6. begin
  7. set @liczba=50
  8. while @liczba<=100
  9. begin
  10. print cast(@liczba as varchar)
  11. if @liczba%5=0 print 'Liczba dzieli się przez 5'
  12. set @liczba+=1
  13. end
  14. end
  15.  
  16.  
  17. --ZADANIE 2.
  18. --Utworzyć funkcję o nazwie liczbyPodzielnePrzez, która za argument przyjmuje dwa argumenty - liczba1 oraz liczba2 i zwraca opis, czy liczba1 jest podzielna przez liczbe2, czy też nie.
  19.  
  20. alter function liczbyPodzielnePrzez
  21. (@liczba1 int, @liczba2 int)
  22. returns varchar(100)
  23. as
  24. begin
  25. if @liczba1%@liczba2=0
  26. return 'Liczba' +cast(@liczba1 as varchar) + ' jest podzielna przez '+cast(@liczba2 as varchar)
  27. return 'Liczba' +cast(@liczba1 as varchar) + ' nie jest podzielna przez '+cast(@liczba2 as varchar)
  28. end
  29.  
  30. select dbo.liczbyPodzielnePrzez(10,2)
  31.  
  32. --ZADANIE 3.
  33. --Utworzyć tabelę o nazwie Adres z kolumną o nazwie ulica i wypełnić ją następującymi wartościami:
  34. --Al. Grunwaldzka 23/32
  35. --BITWY POD PŁOWCAMI 140
  36. --ul. Marii Curie-skłodowskiej 121 / 2
  37. --Al. WOJSKA POLSKIEGO 18D/21
  38. --Al. Niepodległości 99D / 12
  39. --UL. 23 MARCA 39a/1
  40.  
  41. create table Adres (
  42. ulica varchar(50));
  43.  
  44. insert into Adres values
  45. ('Al. Grunwaldzka 23/32'),
  46. ('BITWY POD PŁOWCAMI 140'),
  47. ('ul. Marii Curie-skłodowskiej 121 / 2'),
  48. ('Al. WOJSKA POLSKIEGO 18D/21'),
  49. ('Al. Niepodległości 99D / 12'),
  50. ('UL. 23 MARCA 39a/1');
  51.  
  52. select * from Adres
  53.  
  54. --Należy oczyścić powyższą tablicę poprzez pisanie wielkimi literami każdej nazwy, bez skrótu ul. i al.
  55.  
  56. select replace(replace(upper(ulica),'UL. ', '')'AL. ', '') from Adres;
  57.  
  58. --Skrypt powinien dopasowywać się automatycznie do nowo dodawanych wierszy.
  59.  
  60. --ZADANIE 4.
  61. --Utworzyć nową funkcję o nazwie Oczysc, która będzie oczyszczała wiersze z tabeli o nazwie adres, przyjmując za argument tekst nieoczyszczony i zwracając oczyszczony.
  62.  
  63. create function oczysc(@wiersz varchar(50))
  64. returns varchar(50)
  65. as
  66. begin
  67. return replace(replace(upper(@wiersz),'UL. ',''),'AL. ','')
  68. end
  69.  
  70. select ulica from Adres
  71. select dbo.oczysc(ulica) from Adres
  72.  
  73.  
  74. --ZADANIE 5.
  75. --Napisać funkcję o nazwie LiczbaWierszy, która zwróci liczbę wierszy zapisanych w tabeli o nazwie adres.
  76.  
  77. alter function LiczbaWierszy()
  78. returns numeric(5)
  79. as
  80. begin
  81. declare @liczbawierszy as numeric(5)
  82. select @liczbawierszy=COUNT(*) from Adres
  83. return @liczbawierszy
  84. end
  85. select dbo.LiczbaWierszy()
  86.  
  87.  
  88. --ZADANIE 6.
  89. --Utworzyć wyzwalacz o nazwie ModyfikujAdres, który zablokuje możliwość modyfikacji wierszy w tabeli o nazwie Adres.
  90.  
  91. create trigger ModyfikujAdres
  92. on Adres
  93. after insert, update, delete
  94. as
  95. begin
  96. print 'Brak możliwości zmian w tabeli Adres'
  97. rollback transaction
  98. raiserror ('Transakcja wycofana',1,1)
  99. end
  100.  
  101. insert into Adres values ('1');
  102. select * from Adres
  103. --ZADANIE 7.
  104. --Utworzyć schemat n12. Utworzyć w tym schemacie procedurę o nazwie Dane, która wyświetli wszystkie oczyszczone ulice z tabeli o nazwie Adres.
  105.  
  106. create schema n12;
  107. create table n12.t(id int);
  108. insert into n12.t values (1),(2),(3),(4),(5);
  109.  
  110. select * from n12.t;
  111. select * from dbo.t;
  112.  
  113. create procedure n12.dane
  114. as
  115. begin
  116. select dbo.oczysc(ulica) from Adres
  117. end
  118.  
  119. exec N12.dane
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement