05 2010 05 05id 5609

background image

1

C:\5.2010-05-05.sql

---------------------------------
------------Procedury------------
---------------------------------
--create proc
--create procedure

--

create proc

procedura1

as
begin
select

*

from

pracownicy

end

/*Wywo anie prodedury*/

procedura1

exec

procedura1

execute

procedura1

--doda kolumn wzrost do kolumny pracownicy i wype ni danymi

alter table

pracownicy

add

wzrost

float

update

pracownicy

set

wzrost

=

1.7

update

pracownicy

set

wzrost

=

1.9

where

pracID

>

9

/*tworzenie pro*/

create proc

procedura2 @wz

float

,

@wi

int

as
begin
select

*

from

pracownicy

where

wiek

>

@wi

and

wzrost

>

@wz

end

/*wywo anie*/

procedura2 1.7

,

20

/*wywo anie procedura2 z parametrami: wzrost1.7 oraz wiek = 20*/

/*Procedura wybieraj ca nazwiska pracowniów, których rednie zarobki

równe parametrowi wej ciowemu*/

create proc

procedura3 @sr

money

as
begin
select

nazwisko

+

' '

+

imie

,

AVG

(

brutto

)

from

pracownicy p

join

zarobki z

on

p

.

pracID

=

z

.

pracID

group by

z

.

pracID

,

nazwisko

+

' '

+

imie

having

AVG

(

brutto

)=

@sr

/*praca domowa:
sprawdzi , które zatrobki s najwy sze - w unii w select musi si zgadza
to co by o wcze niej*/

/*union
select nazwisko +' ' +imie, AVG(brutto)from pracownicy p
join zarobki z on p.pracID=z.pracID
group by z.pracID, nazwisko +' ' +imie
having AVG(brutto)= --tutaj trzeba wpisa odpowiednie zapytanie wybieraj ce!!!

/*koniec PD*/*/

end

procedura3 2600.00

--procedura wybieraj ca nazwiska pracowników których rednie zarobki s najwy sze
--lub równe parametrowi wej ciowemu

create proc

procedura4 @im

varchar

(

50

),

@nazw

varchar

(

50

)=

'k%'

as
begin

select

*

from

pracownicy

where

imie

like

@im

and

nazwisko

like

@nazw

end

background image

2

C:\5.2010-05-05.sql

go

procedura4

'j%'

,

'k%'

go

procedura4

'j%'

/*takie jak poprzednie tylko przy @im jest %*/

create proc

procedura5 @im

varchar

(

50

)=

'%'

,

@nazw

varchar

(

50

)=

'k%'

as
begin

select

*

from

pracownicy

where

imie

like

@im

and

nazwisko

like

@nazw

end
go

--konieczne do wywo ania procedury i stworzenia jej w jednym wywo aniu

procedura5 @nazw

=

'j%'

--procedura 6

alter proc

procedura6 @ilosc

int

as
begin

declare

@zm

varchar

(

50

)

set

@zm

=

'zmienna'

--bez SET nie zadzia a!

select

@zm

=

nazwisko

from

pracownicy

-- przypisywanay ostatni rekord z pracownicy

print

@zm

--wyswietla warto

zmiennej

/*Instrukcja warunkowa IF*/

if

LEN

(

@zm

)>

10

print

'wieksza'

else

print

'mniejsza'

/*przej cie w p tli*/

declare

@i

int

set

@i

=

0

while

@i

<

@ilosc

begin

print

'przebieg p tli '

+

convert

(

varchar

,

@i

)

/*wy wietla tylko varchar,
dlatego konieczna konwersja*/

set

@i

=

@i

+

1

end

end
go

procedura6 100

alter proc

procedura7 @a

int

,

@b

int

,

@suma

int OUTPUT

as
begin

set

@suma

=

@a

+

@b

end
go

declare

@suma

int

--tworzenie procedury anonimowej

exec

procedura7 5

,

3

,

@suma

output

print

'wynik '

+

convert

(

varchar

,

@suma

)

-- rednia 3 warto ci i czy NOT NULL

alter proc

procedura8 @a

int

,

@b

int

,

@c

int

,

@srednia

float output

as
begin

if

@a

is null or

@b

is null or

@c

is null

print

'podaj poprawne warto ci '

else

set

@srednia

= (

@a

+

@b

+

@c

)/

3

print

'Wynik: '

+

convert

(

varchar

,

@srednia

)

end
go

background image

3

C:\5.2010-05-05.sql

--

declare

@wyn

float

exec

procedura8 1

,

2

,

4

,

@wyn

output

print

'Srednia z danych wynosi : '

+

convert

(

varchar

,

@wyn

)

background image

1

C:\5.2010-05-05_funkcje.sql

---------------------------------
--------------FUNKCJE------------
---------------------------------

create function

zero

()

returns integer
as
begin

return

0

end
go

/*wywo anie funkcji*/

select

dbo

.

zero

()

--musi by dbo. (DataBaseOwner) przed nazw fuckji!!!

declare

@wynik

integer

set

@wynik

=

dbo

.

zero

()

print

'Wynik funkcji:

'

+

cast

(

@wynik

as varchar

)

/*funkcja zwracaj ca sum

2 warto ci:*/

create function

suma_wartosci

(

@a

integer

,

@b

integer

)

returns integer
as
begin

return

@a

+

@b

end
go

select

dbo

.

suma_wartosci

(

2

,

3

)

/*Pot ga parametru wej ciowego*/

alter function

potega

(

@a

float

,

@pot

float

)

returns float
as
begin

declare

@wynik

float

set

@wynik

=

power

(

@a

,

@pot

)

return

@wynik

end
go

declare

@a

float

,

@wynik

float

set

@a

=

15

;

set

@wynik

=

dbo

.

potega

(

@a

,

2

);

print

cast

(

@a

as varchar

) +

' do kwaratu to '

+

cast

(

@wynik

as varchar

)

select

dbo

.

potega

(

AVG

(

wiek

),

2

)

from

pracownicy

select

nazwisko

+

' '

+

imie

,

dbo

.

potega

(

wiek

,

2

)

from

pracownicy


Wyszukiwarka

Podobne podstrony:
2 1 VII 05 05id 19937
2010 05 Kombajn sygnałowy DDS
2010 11 WIL Wyklad 05
Nr 86 05 2010
Modlitwa Wiernych 01.05.2010, Szkoła Liturgii, Modlitwy wiernych
Wstęp do teorii tłumaczeń 31.05.2010, moczulski
KOMUNIKACJA SPOŁECZNA 05 2010
podst fin ćw " 05 2010
Rewolucja Na Talerzu s01e02 Kotlet schabowy 06 05 2010
2010 02 05 09;33;36
04 05 belki i ramy zadanie 05id 4920
2010 vol 05 POLITYKA ENERGETYCZNA TURCJI PO ZIMNEJ WOJNIE
2010 05 R odp
Lista 05 Tablice trwania zycia (2010)
2010 05 Analizator widma 70MHz część 2
loveparade 2010 anlage 05 protokoll ag verkehr 20 10 09
2010 05 04
Raport z audytu17.05.2010, Wojskowy Instytut Lotnictwa
16.05.2010 motywowanie w organizacji, STUDIA, WZR I st 2008-2011 zarządzanie jakością, motywowanie

więcej podobnych podstron