bazy danych kol 2 id 81577 Nieznany (2)

background image

Spis treści

1.

Procedura zwracająca osoby których średnie zarobki są większe od podanych w parametrze. .... 1

2.

Funkcja przyjmująca tekst jako parametr, odwracająca i powtarzająca tyle razy ile podano w

drugim parametrze .................................................................................................................................. 2

3.

Zapytanie zwracające nazwę dnia tygodnia z aktualnego dnia + ile dni 2

4.

Trigger który przy dodaniu i modyfikacji tabeli pracownicy tworzy email w tabeli pracownicy 3

liter imienia kropki 5 liter nazwiska i @p.lodz.pl..................................................................................... 3

5.

Procedura zwracająca „Wiadomość” osoby które maja <parametr1> do <parametr2> lat ........... 3

6.

Funkcja która miesza znaki z <prametr1> i <parametr2> od tylu ................................................... 4

7.

Funkcja zwracająca osoby których nazwisko zaczyna się na literę podana w parametrze ............. 4

8.

Sterowanie przepływem- pętle ........................................................................................ 4

9.

Procedura dzieląca adres na poszczególne fragmenty ....................................... 5

10.

Procedura zwracająca w ‘wiadomości’ co drugiego pracownika którego

imie zaczyna się na <parametr> ............................................................................................... 5




1. Procedura zwracająca osoby których średnie zarobki są większe od podanych w parametrze.

create

proc

procedura

@wej_srednia

money

as

begin

select

nazwisko

,

avg

(

brutto

)

srednia

from

pracownicy

p

join

zarobki

z

on

z

.

pracID

=

p

.

pracID

group

by

p

.

nazwisko

having

avg

(

brutto

)=

(

select

max

(

wynik

.

srednia

)

from

(

select

nazwisko

,

avg

(

brutto

)

srednia

from

pracownicy

p

join

zarobki

z

on

z

.

pracID

=

p

.

pracID

group

by

nazwisko

)

wynik

)

union

select

nazwisko

,

avg

(

brutto

)

srednia

from

pracownicy

p

join

zarobki

z

on

z

.

pracID

=

p

.

pracID

group

by

nazwisko

having

avg

(

brutto

)=

@wej_srednia

;

end

procedura

5600








background image

2. Funkcja przyjmująca tekst jako parametr, odwracająca i powtarzająca tyle razy ile podano w

drugim parametrze

create

function

rev

(

@par1

varchar

(

10

),

@par2

integer

)

returns

varchar

(

50

)

as

begin

declare

@i

as

integer

declare

@wynik

as

varchar

(

50

)

set

@i

=

0

set

@wynik

=

''

while

@i

<

@par2

begin

set

@i

=

@i

+

1

if

((

@i

=

1

)

or

(

@i

=

3

)

or

(

@i

=

5

))

begin

set

@wynik

=

@wynik

+

REVERSE

(

SUBSTRING

(

@par1

,

1

,

LEN

(

@par1

)))

+

'_'

end

else

begin

set

@wynik

=

@wynik

+

SUBSTRING

(

@par1

,

1

,

LEN

(

@par1

))

+

'_'

end

end

return

@wynik

end


select

dbo

.

rev

(

'XYZ'

,

5

)










3.

Zapytanie zwracające nazwę dnia tygodnia z aktualnego dnia + ile dni

alter

function

fun_kol

(

@a

date

,

@b

integer

)

returns

varchar

(

30

)

as

begin

declare

@day

integer

if

@b

is

null

set

@b

=

10

set

@day

=

@b

+

DATEPART

(

day

,

@a

)



declare

@z

varchar

(

20

)

if

DATEPART

(

weekday

,

@day

)=

1

set

@z

=

'Poniedzialek'

if

DATEPART

(

weekday

,

@day

)=

2

set

@z

=

'Wtorek'

if

DATEPART

(

weekday

,

@day

)=

3

set

@z

=

'Środa'

if

DATEPART

(

weekday

,

@day

)=

4

set

@z

=

'Czwartek'

if

DATEPART

(

weekday

,

@day

)=

5

set

@z

=

'Piątek'

if

DATEPART

(

weekday

,

@day

)=

6

set

@z

=

'Sobota'

if

DATEPART

(

weekday

,

@day

)=

7

set

@z

=

'Niedziela'

return

@z

end

print

datepart

(

day

,

'04/07/2010'

)

background image

4. Trigger który przy dodaniu i modyfikacji tabeli pracownicy tworzy email w tabeli pracownicy

3 liter imienia kropki 5 liter nazwiska i @p.lodz.pl

create

table

pracownicy

add

email

varchar

(

100

)

alter

trigger

em

on

pracownicy

for

insert

,

update

as

begin

update

pracownicy

set

email

=

SUBSTRING

(

Imię

,

1

,

3

)+

'.'

+

SUBSTRING

(

nazwisko

,

1

,

5

)+

'@p.lodz.pl'

end

insert

into

pracownicy

(

IDpracownika

,

Imię

,

nazwisko

)

values

(

'10'

,

'Jan'

,

'Zasada'

)

select

*

from

pracownicy


5. Procedura zwracająca „Wiadomość” osoby które maja <parametr1> do <parametr2> lat

create

procedure

kolokwium2

@par1

int

,

@par2

int

as

begin

declare

@imie

varchar

(

50

)

declare

@nazwisko

varchar

(

50

)

declare

@wiek

int

declare

@tmp

varchar

(

50

)


if

@par1

=

''

begin

set

@par1

=

18

end

if

@par2

=

''

begin

set

@par2

=

30

end

declare

kurs1

scroll

cursor

for

select

imie

,

nazwisko

,

wiek

from

pracownicy

open

kurs1

fetch

last

from

kurs1

into

@imie

,

@nazwisko

,

@wiek

while

@@FETCH_STATUS

=

0

begin

if

((

@par1

<

@wiek

)

and

(

@par2

>

@wiek

))

begin

print

'Osoba '

+

@imie

+

' '

+

@nazwisko

+

' '

+

cast

(

@wiek

as

varchar

)

+

'lat'

end

fetch

relative

-

2

from

kurs1

into

@imie

,

@nazwisko

,

@wiek

end

close

kurs1

deallocate

kurs1

end


kolokwium2

36

,

200

background image

6. Funkcja która miesza znaki z <prametr1> i <parametr2> od tylu

alter

FUNCTION

znaki

(

@a

varchar

(

50

),

@b

varchar

(

50

))

returns

varchar

(

100

)

as

begin

if

LEN

(

@a

)

!=

LEN

(

@b

)

return

'Blad dlugosci znakow'

+

cast

(

len

(

@a

)

as

varchar

)

+

'<>'

+

cast

(

len

(

@b

)

as

varchar

)

declare

@licznik

integer

;

declare

@wynik

varchar

(

100

);

set

@licznik

=

0

;

set

@wynik

=

''

;

while

@licznik

<=

LEN

(

@a

)

begin

set

@licznik

=

@licznik

+

1

set

@wynik

=

@wynik

+

SUBSTRING

(

@a

,

@licznik

-

1

,

1

)

set

@wynik

=

@wynik

+

SUBSTRING

(

@b

,

@licznik

-

1

,

1

)

end

return

reverse

(

@wynik

)

end
select

dbo

.

znaki

(

'12345'

,

'adams'

)




7. Funkcja zwracająca osoby których nazwisko zaczyna się na literę podana w parametrze

create

function

rebel

(

@filtr

varchar

(

3

))

returns

table

as

return

(

select

imie

,

nazwisko

from

pracownicy

where

nazwisko

like

@filtr

)

-- w tym miejscu nie ma begina i enda

go

select

*

from

dbo

.

rebel

(

'n%'

)


8. Sterowanie przepływem- pętle

alter

proc

procedura

@ilosc

integer

as

begin

declare

@nazw

varchar

(

50

)

--ustawienie na dana wartosc

set

@nazw

=

'puste'

print

@nazw

--ostatni rekord jest podstawiany

select

@nazw

=

nazwisko

from

pracownicy

order

by

nazwisko

;

print

@nazw


if

len

(

@nazw

)>

10

print

'wieksza'

else

print

'mniejsza'


declare

@i

integer

set

@i

=

0

while

@i

<

@ilosc

begin

print

'Przebieg nr '

+

convert

(

varchar

,

@i

)

set

@i

=

@i

+

1

end

end

exec

procedura

5

;


background image

9. Procedura dzieląca adres na poszczególne fragmenty

create

procedure

adres

@adres_caly

varchar

(

100

)

as

begin

declare

@dl_ul

integer

declare

@pozycja

integer

declare

@reszta

varchar

(

100

)

set

@reszta

=

@adres_caly

set

@pozycja

=

charindex

(

' '

,

@reszta

)

print

substring

(

@reszta

,

0

,

@pozycja

+

1

)

while

(

len

(

@reszta

)>

2

)

begin

set

@reszta

=

substring

(

@reszta

,

@pozycja

+

1

,

len

(

@reszta

))

set

@pozycja

=

charindex

(

' '

,

@reszta

)

print

substring

(

@reszta

,

0

,

@pozycja

+

1

)

end

end
exec

adres

'Piotrkowska 123/23 m.30 90-123 Łódź '


10.

Procedura zwracająca w ‘wiadomości’ co drugiego pracownika którego imie zaczyna
się na <parametr>

create

procedure

zadanie4

@param

varchar

(

1

)

as

begin

declare

@nazw

varchar

(

50

)

declare

@imie

varchar

(

50

)

declare

@wiek

int

declare

@licz

int

set

@licz

=

1

if

@param

is

null

begin

declare

cr_pracownicy

cursor

scroll

for

select

imie

,

nazwisko

,

wiek

from

pracownicy


open

cr_pracownicy

fetch

last

from

cr_pracownicy

into

@imie

,

@nazw

,

@wiek

while

@@Fetch_status

=

0

begin

print

@imie

+

' '

+

@nazw

+

' '

+

cast

(

@wiek

as

varchar

)

+

'lat Pracownik nr: '

+

cast

(

@licz

as

varchar

)

fetch

prior

from

cr_pracownicy

into

@imie

,

@nazw

,

@wiek

fetch

prior

from

cr_pracownicy

into

@imie

,

@nazw

,

@wiek

set

@licz

=

@licz

+

2

end

close

cr_pracownicy

deallocate

cr_pracownicy

end

else

begin

declare

cr_pracownicy

cursor

scroll

for

select

imie

,

nazwisko

,

wiek

from

pracownicy

where

upper

(

nazwisko

)

like

@param

+

'%'


open

cr_pracownicy

fetch

last

from

cr_pracownicy

into

@imie

,

@nazw

,

@wiek

while

@@Fetch_status

=

0

begin

background image

print

@imie

+

' '

+

@nazw

+

' '

+

cast

(

@wiek

as

varchar

)

+

'lat Pracownik nr: '

+

cast

(

@licz

as

varchar

)

fetch

next

from

cr_pracownicy

into

@imie

,

@nazw

,

@wiek

fetch

next

from

cr_pracownicy

into

@imie

,

@nazw

,

@wiek

set

@licz

=

@licz

+

2

end

close

cr_pracownicy

deallocate

cr_pracownicy

end

end

go

exec

zadanie4

'k'

;


Wyszukiwarka

Podobne podstrony:
bazy danych druga id 81754 Nieznany (2)
Bazy danych kolo 2 1 id 81756 Nieznany
Bazy Danych1 secret id 81733 Nieznany (2)
bazy danych wyk2 id 81712 Nieznany (2)
bazy danych wyklad1 id 81713 Nieznany (2)
Bazy Danych bd4 id 633777 Nieznany (2)
Bazy danych 07 id 81462 Nieznany (2)
bazy danych wyk id 81390 Nieznany (2)
bazy danych sql id 81694 Nieznany
BAZY danych wyk id 81710 Nieznany (2)
Bazy Danych kolokwium1 id 81578 Nieznany (2)
bazy danych wyklady id 81711 Nieznany (2)
Bazy danych egzamin(1) id 81477 Nieznany
Bazy Danych bd5 id 633778 Nieznany (2)
bazy danych druga id 81754 Nieznany (2)
Bazy danych kolo 2 1 id 81756 Nieznany
Bazy Danych1 secret id 81733 Nieznany (2)
Bazy danych i mysql od podstaw Nieznany (3)

więcej podobnych podstron