Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as SQL by registered user polska1295 ( 9 years ago )
WHEN @dziel=9 THEN 'dziewiec'
END
PRINT 'Reszta z dzielenia ' + convert(varchar(2), @a) + ' i ' +
convert(varchar(2), @b)  + ' wynosi '+ @wynik ;
4. Napisz program, który pobierze bieżącą datę, a następnie ją wyświetli.
select CONVERT(smalldatetime,getdate(),120)
5. Napisz program, który wyświetli nazwisko, imię oraz email wszystkich pracowników w postaci „nazwisko imie – email”.
DECLARE
@imie char(30),
@nazwisko char(30),
@adresemail char(30),
@liczbapracownikow int
SELECT @liczbapracownikow=COUNT(*) from dbo.Pracownicy
DECLARE @index
SET @index=1
WHILE @index<=@liczbapracownikow
BEGIN
SELECT @nazwisko = nazwisko, @imie = imie, @adresemail =adresemail
from dbo.klienci;
PRINT @nazwisko + ' - ' + @imie + ' - ' + @adresemail
@index=@index+1
END
6. Napisz program, który wyświetli tych Kursantów, którzy posiadają identyfikator większy od wartości zmiennej podanej w 
programie
DECLARE
@nazwisko varchar(30),
@id int=1,
@imie varchar(30)
select @imie=imie, @id=idKlienci, @nazwisko=nazwisko from dbo.klienci where idKlienci > @id ;
print @imie + @nazwisko + convert(varchar(30), @id);
7. Napisz program, który wyświetli dane tych Zajęć, które rozpoczynają się ciągu znaków podanego jako zmienna w 
programie.
DECLARE
@ciag varchar(30)
SET @ciag = 'W pustyni i%'
SELECT *
from Spektakl
WHERE Nazwa LIKE @ciag;
8. Napisz program wyświetlający wynik dzielenia dwóch liczb. Należy sprawdzić poprawność danych (instrukcją warunkową).
DECLARE
@dzielna int = 7,
@dzielnik int = 3,
@wynik float
IF @dzielnik != 0
BEGIN
SET @wynik = @dzielna / @dzielnik;
PRINT 'Wynik dzielenia liczb ' + convert(varchar(4), @dzielna) +' ' +
convert(varchar(4), @dzielnik) +' to '+ convert(varchar, @wynik)
END
ELSE
PRINT 'Dzielenie przez 0!'
9. Napisz program, który pobierze zmienną, a następnie wyświetli komunikat zgodnie z tabelką poniżej:
DECLARE
@zmienna int = 50
IF @zmienna < 5 liczbaaktorow=COUNT(*) index=1 index<=@liczbaaktorow liczbaspektakli=COUNT(*) idAktor=@index index=@index+1 liczbaspektakli<=2 liczbaspektakli<=8 liczbaaktorow=COUNT(*) index=1 index<=@liczbaaktorow liczbaspektakli=CASE COUNT(*)%2=0 COUNT(*)%2!=0 idAktor=@index liczbaaktorow=COUNT(*) index=1 index<=@liczbaaktorow liczbaspektakli=CASE COUNT(*)<=2>2 AND COUNT(*)<=8 THEN 'Sporo spektakli'
WHEN COUNT(*)>8 THEN 'Dużo spektakli' END from dbo.aktor-spektakl WHERE idAktor=@index
@index=@index+1
END
END
13. Napisz program (z użyciem instrukcji CASE), który wyświetli dane wszystkich pracowników i je posortuje. Jeśli dana osoba
posiada identyfikator podzielny przez 2 to dane mają być posortowane rosnąco, w przeciwnym razie malejąco. Podpowiedź: 
można zastosować instrukcję WHEN polecenia CASE
SELECT * from pracownicy5
ORDER BY
CASE WHEN idPracownik%2 = 0 THEN idPracownik END ASC,
CASE WHEN idPracownik%2 != 0 THEN idPracownik END DESC
14. Napisz program, który wyświetli dane zajęć i je posortuje. Należy posortować według godziny zajęć w dni tygodnia. Od 
poniedziałku do środy dane mają być posortowane malejąco, a w pozostałe rosnąco.
SELECT * from seans
ORDER BY
CASE WHEN DATEPART(dw,Data)<=3 THEN idSpektakl END Desc,
CASE WHEN DATEPART(dw,Data)>3 THEN idSpektakl END Asc,
15. Napisz program wyświetlający kolejne liczby całkowite z zakresu od 1 do 20. Należy zastosować instrukcję iteracyjną (np. 
WHILE).
DECLARE
@liczba int
set @liczba=1
while @liczba <=20
BEGIN
PRINT @liczba
set @liczba=@liczba+1
END
16. Napisz program, który odczyta identyfikator pracownika, który był ostatnio zwolniony, a następnie wyświetli dane 
pracowników, którzy posiadają identyfikator mniejszy. W przypadku, gdy zapytanie nie zwróci wyników należy wyświetlić 
odpowiedni komunikat.
DECLARE
@ostatniozwolniony int
SELECT @ostatniozwolniony=id from dbo.pracownicy WHERE Status=0
DECLARE @index int
SET @index=@ostatniozwolniony-1
WHILE @index>=1
BEGIN
SELECT * from pracownicy WHERE id=@index
END
17. Napisz funkcję, która zwróci liczbę kursantów.
CREATE FUNCTION szkolaSchema.LiczbaKursantow()
RETURNS int
AS
BEGIN
DECLARE @licz int
SET @licz = (select COUNT(*)
from dbo.Kursanci
)
RETURN (@licz)
END;
18. Napisz funkcję, która zwróci maksymalną liczbę - który pracownik prowadzi najwięcej zajęć. Funkcja nie musi posiadać 
parametrów. Funkcja zwraca liczbę całkowitą.
CREATE FUNCTION dbo.maxZajec()
RETURNS int
AS
BEGIN
DECLARE @max int,
@liczbaaktorow int,
@index int,
@max int,
@liczbaspektakli int
SELECT @liczbaaktorow=COUNT(*) from dbo.Aktor
SET @index=1
SET @max=0
WHILE @index<=@liczbaaktorow
BEGIN
SELECT @liczbaspektakli = COUNT(*) from abo.aktor-spektakl where idAktor=@index
IF @liczbaspektakli>@max
BEGIN
SET @max=@liczbaspektakli
END
@index=@index+1
END
RETURN (@max)
END;
19. Należy napisać program, który wywoła funkcję i wyświetli wynik zgodnie z instrukcją do zadania 10
CREATE FUNCTION dbo.spektakle(@idAktor int)
RETURNS varchar(30)
AS
BEGIN
DECLARE
@liczbaspektakli int,
@wynik varchar(30)
SELECT @liczbaspektakli=COUNT(*) from dbo.aktor-spektakl WHERE idAktor=@idAktor
IF @liczbaspektakli<=2
BEGIN
SET @wynik='Mało zagranych spektakli’
END
ELSE
BEGIN
IF @liczbaspektakli<=8
BEGIN
SET @wynik='Sporo zagranych spektakli’
END
ELSE
BEGIN
SET @wynik='Dużo zagranych spektakli’
END
RETURN @wynik
END
20. Należy napisać funkcję, która zliczy ile zajęć prowadzi dany pracownik. Funkcja powinna posiadać parametr w postaci 
identyfikatora pracownika. Funkcja powinna zwracać liczbę całkowitą.
CREATE FUNCTION dbo.AktorLiczbaSpektakli(@idAktor INT)
RETURNS int
AS
BEGIN
DECLARE @suma int
SELECT @suma=COUNT(*) from dbo.aktor-spektakl WHERE idAktor=@idAktor
RETURN @suma
END;
21. Należy napisać program korzystający z funkcji z zadania 19
DECLARE
@liczbaSpektakli int
SET @liczbaSpektakli=(select dbo.AktorLiczbaSpektakli(2))
IF @liczbaSpektakli<=2
BEGIN
PRINT 'Mało spektakli'
END
ELSE
BEGIN
IF @liczbaSpektakli <=8
BEGIN
PRINT 'Sporo spektakli'
END
ELSE
BEGIN
PRINT 'Dużo spektakli'
END
END
22. Napisz funkcję, która wyświetli zajęcia prowadzone w danej filii. Nr filii podawany jest jako parametr funkcji.
CREATE FUNCTION dbo.SalaSpektakle(@idSala INT)
RETURNS table
AS
BEGIN
RETURN SELECT * from dbo.Seans where idSala=@idSala
END
23. Należy napisać program korzystający z utworzonej funkcji.
SELECT * from dbo.SalaSpektakle(1)
24. Zmodyfikuj wybraną funkcję poleceniem ALTER FUNCTION.
ALTER FUNCTION dbo.SalaSpektakle(@idSala INT)
RETURNS table
AS
BEGIN
RETURN SELECT * from dbo.Seans where idSala=@idSala
END
25. Napisz procedurę wyświetlającą dane pracowników zatrudnionych po roku 2010. Dane posortuj według daty 
zatrudnienia.
CREATE PROCEDURE dbo.SeansPo2010
AS
BEGIN
SELECT * from dbo.Seans where Data>'2009-12-31'
END
26. Uruchom utworzoną procedurę
EXECUTE dbo.SeansPo2010
27. Napisz procedurę, która wyświetli liczbę prowadzonych zajęć przez pracowników o danym imieniu i nazwisku. Imię oraz 
nazwisko ma być parametrem procedury. Procedura powinna zwrócić dane przy użyciu parametrów.
CREATE PROCEDURE SeanseAktora
@nazwisko VARCHAR(30),
@imie VARCHAR(30),
@wynik int OUT
AS
BEGIN
SELECT @wynik=COUNT(*) from aktor, aktor-spektakl WHERE aktor.idAktor = aktor-spektakl.idAktor AND aktor.imie=@imie 
AND aktor.nazwisko=@nazwisko
END
28. Napisz program, który poda imię i nazwisko pracownika, a następnie wyświetli jego zajęcia z użyciem opracowanej 
procedury. Jeśli pracownik nie posiada prowadzonych zajęć, należy wyświetlić odpowiedni komunikat
DECLARE
@liczbaaktorow int,
@liczbaspektakli int,
@imie varchar(30),
@nazwisko varchar(30),
@w int
SELECT @liczbaaktorow=COUNT(*) from dbo.Aktor
DECLARE @index
SET @index=1
WHILE @index<=@liczbaaktorow
SELECT @imie=imie, @nazwisko=nazwisko from dbo.Aktor where idAktor=@index
EXECUTE SeanseAktora @imie, @nazwisko, @w out
PRINT @imie+' '+@nazwisko+' '+convert(varchar(30),@w)
SET @index=@index+1
END
29. Należy napisać procedury wprowadzające dane do wszystkich kolejnych tabel utworzonych w bazie szkola. Każda 
procedura powinna dotyczyć konkretnej tabeli. Każda procedura powinna posiadać parametry – dane, które będą 
wprowadzone jako kolejne rekordy.
CREATE PROCEDURE insertKlienci
@nazwisko VARCHAR(30),
@imie VARCHAR(30),
@panstwo varchar(30),
@miasto varchar(30),
@ulica varchar(30),
@numer_domu int,
@numer_mieszkania int,
@kod_pocztowy varchar(6),
@numer_telefonu varchar(12),
@email varchar(30)
AS
BEGIN
INSERT INTO [dbo].[Klienci]
([Imie]
,[Nazwisko]
,[Panstwo]
,[Miasto]
,[Ulica]
,[Numer_domu]
,[Numer_mieszkania]
,[Kod_pocztowy]
,[Numer_telefonu]
,[Adres_Email])
VALUES
(
@imie,
@nazwisko,
@panstwo,
@miasto,
@ulica,
@numer_domu,
@numer_mieszkania,
@kod_pocztowy,
@numer_telefonu,
@email)
END
31. Utwórz nowy kursor pobierający wszystkie dane o zajęciach, posortowanych według prowadzących.
32. Należy otworzyć kursor, przetworzyć kolejne rekordy (można je wyświetlić z odpowiednim formatowaniem) oraz zamknąć
kursor.
DECLARE
@id int,
@tytul varchar(30),
@rezyser varchar(30),
@gatunek varchar(30)
DECLARE Spetkakle CURSOR
FOR
select idSpektakl, Tytul, Rezyser, Gatunek from dbo.Spektakl
OPEN Spektakle
FETCH NEXT FROM Spektakle
INTO @id, @tytul, @rezyser, @gatunek
WHILE @@FETCH_STATUS = 0
Begin
PRINT @tytul+' '+@rezyser+' '+@gatunek
FETCH NEXT FROM Spektakle
INTO @id, @tytul, @rezyser, @gatunek
END;
CLOSE Spetkakle
DEALLOCATE Spektakle
33. Należy napisać program z użyciem kursora, który pobierze dane o wszystkich pracownikach. Program powinien 
wyświetlić, czy dany pracownik posiada status „zatrudniony” czy „zwolniony”.
DECLARE
@id int,
@imie varchar(30),
@nazwisko varchar(30),
@status tinyint,
@stanowisko int,
@status_tekst varchar(30),
@stanowisko_tekst varchar(30)
DECLARE Pracownicy CURSOR
FOR
select id, Imie, Nazwisko, Status, Stanowska_idStanowiska from Pracownicy
OPEN Pracownicy
FETCH NEXT FROM Pracownicy
INTO @id, @imie, @nazwisko, @status, @stanowisko
WHILE @@FETCH_STATUS = 0
Begin
PRINT @imie+' '+@nazwisko
SELECT @stanowisko_tekst=Nazwa_stanowisk from dbo.Stanowiska where idStanowiska=@stanowisko
PRINT @stanowisko_tekst
SET @status_tekst = CASE WHEN 0 then 'Zwolniony'
WHEN 1 then 'Zatrudniony' END
PRINT @status_tekst
FETCH NEXT FROM Pracownicy
INTO @id, @imie, @nazwisko, @status, @stanowisko
END;
CLOSE Pracownicy
DEALLOCATE Pracownicy

 

Revise this Paste

Your Name: Code Language: