Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
BulgaraCeha slovacaCroataEnglezaEstonaFinlandezaFranceza
GermanaItalianaLetonaLituanianaMaghiaraOlandezaPoloneza
SarbaSlovenaSpaniolaSuedezaTurcaUcraineana

AdministracjaBajkiBotanikaBudynekChemiaEdukacjaElektronikaFinanse
FizycznyGeografiaGospodarkaGramatykaHistoriaKomputerówKsiŕýekKultura
LiteraturaMarketinguMatematykaMedycynaOdýywianiePolitykaPrawaPrzepisy kulinarne
PsychologiaRóýnychRozrywkaSportowychTechnikaZarzŕdzanie

Pętle i wykonania warunkowe SQL

komputerów



+ Font mai mare | - Font mai mic



DOCUMENTE SIMILARE

Pętle i wykonania warunkowe

Wykonania warunkowe

Składnia:

IF warunek_1 THEN zestaw_instrukcji_1;



ELSIF warunek_2 THEN zestaw_instrukcji_2;

ELSIF warunek_n THEN zestaw_instrukcji_n;

ELSE zestaw_instrukcji_n+1;

END IF;

Klauzule IF, THEN, END IF są obowiązkowe - pozostałe są opcjonalne

Warunek mose być zmienną typu BOOLEAN lub wyraseniem logicznym

Ćwiczenie 4.1

Nalesy dać pracownikom podwyskę, w zalesności od zajmowanego stanowiska. Propozycja:

set echo off

set termout on

set verify off

set feedback off

set pause off

column sal format 999,999,999

column comm format 999,999,999

accept NrPrac prompt 'Podaj numer pracownika: '

prompt

prompt Zarobki przed podwyską:

select ename Nazwisko,

sal Pensja,

comm Prowizja

from emp

where empno = &NrPrac;

declare

zawod_ emp.job%type;

pensja_ emp.sal%type;

prowizja_ emp.comm%type;

begin

select job, sal, comm

into zawod_, pensja_, prowizja_

from emp

where empno = &NrPrac;

if zawod_ = 'SALESMAN'

then

if prowizja_ > 0.25 * pensja_

then

pensja_ := round(1.2*pensja_,0);

else

pensja_ := round(1.1*pensja_,0);

end if;

elsif zawod_ = 'PRESIDNT'

then

pensja_ := round(1.25*pensja_,0);

else

pensja_ := round(1.1*pensja_,0);

end if;

update emp

set sal = pensja_

where empno = &NrPrac;

insert into uwaga (komunikat) values ('Podwyska obliczona');

exception

when no_data_found

then

insert into uwaga (komunikat) values ('Pracownik o podanym numerze nie istnieje');

end;

prompt

prompt Zarobki po podwysce:

select ename Nazwisko,

sal Pensja,

comm Prowizja

from emp

where empno = &NrPrac;

select * from uwaga;

delete from uwaga;

set verify on

set feedback on

column sal clear

set echo on

Uwaga - zmiany wycofaj poleceniem ROLLBACK.

Pętle

LOOP

Składnia:

[<<etykieta>>] LOOP

zestaw_instrukcji

END LOOP [etykieta];

Wyjście z pętli LOOP:

EXIT [etykieta] [WHEN warunek]

Uwagi:

Komendy EXIT mosna usywać tylko w pętli

Etykieta musi być wcześniej zadeklarowana

Ćwiczenie 4.2

Obliczyć 10! Przy usyciu pętli LOOP. Propozycja:

set echo off

set termout on

set verify off

set feedback off

set pause off

accept Liczba prompt 'Podaj liczbę dla której chcesz obliczyć silnię: '

prompt

declare

iloraz_ number := 1;

czynnik_ number := 0;

begin

loop

czynnik_ := czynnik_ + 1;

iloraz_ := iloraz_ * czynnik_;

exit when czynnik_ = &Liczba;

end loop;

insert into uwaga (komunikat) values('To jest '||'&Liczba'||'! : '||to_char(iloraz_));

end;

select * from uwaga;

delete from uwaga;

set verify on

set feedback on

set echo on

FOR

Składnia:

[<<etykieta>>] FOR licznik IN [REVERSE] wyr1 .. wyr2 LOOP

zestaw_instrukcji;

END LOOP [etykieta];

licznik - nie wymaga deklaracji, przyjmuje typ NUMBER

wyr1, wyr2 - zmienne, stałe lub wyrasenia o wartości całkowitej

Jeseli nie usyjemy słowa REVERSE - licznik startuje od wartości wyr1 i rośnie do wartości wyr2 z krokiem +1

Jeseli usyjemy słowa REVERSE - licznik startuje od wartości wyr2 i maleje do wartości wyr1 z krokiem -1

Zakończenie pętli

Pętla FOR wykonuje się (wyr2 - wyr1) + 1 razy. Wcześniejsze zakończenie mosna wymusić poleceniem EXIT.

Ćwiczenie 4.3

Obliczyć 10! przy usyciu pętli FOR. Propozycja:

set echo off

set termout on

set verify off

set feedback off

set pause off

accept Liczba prompt 'Podaj liczbę dla której chcesz obliczyć silnię: '

prompt

declare

iloraz_ number := 1;

begin

for i in 1 .. &Liczba

loop

iloraz_ := iloraz_ * i;

end loop;

insert into uwaga (komunikat) values('To jest '||'&Liczba'||'! : '||to_char(iloraz_));

end;

select * from uwaga;

delete from uwaga;

set verify on

set feedback on

set echo on

WHILE

Składnia:

[<<etykieta>>] WHILE warunek LOOP

zestaw_instrukcji;

END LOOP;

warunek - zmienna typu BOOLEAN lub wyrasenie logiczne

Zakończenie pętli

Pętla WHILE wykonuje się dopóki warunek ma wartość TRUE. Wcześniejsze zakończenie mosna wymusić poleceniem EXIT.

Ćwiczenie 4.4

Obliczyć 10! przy usyciu pętli WHILE. Propozycja:

set echo off

set termout on

set verify off

set feedback off

set pause off

accept Liczba prompt 'Podaj liczbę dla której chcesz obliczyć silnię: '

prompt

declare

iloraz_ number := 1;

czynnik_ number := 1;

begin

while czynnik_ <= &Liczba

loop

iloraz_ := iloraz_ * czynnik_;

czynnik_ := czynnik_ + 1;

end loop;

insert into uwaga (komunikat) values('To jest '||'&Liczba'||'! : '||to_char(iloraz_));

end;

select * from uwaga;

delete from uwaga;

set verify on

set feedback on

set echo on

GOTO

Składnia:

GOTO etykieta

Uwagi

Etykieta musi być zadeklarowana

Etykieta mose być zadeklarowana w bloku nadrzędnym

Ćwiczenie 4.5

Obliczyć 10! przy usyciu instrukcji GOTO. Propozycja:

set echo off

set termout on

set verify off

set feedback off

set pause off

accept Liczba prompt 'Podaj liczbę dla której chcesz obliczyć silnię: '

prompt

declare

iloraz_ number := 1;

czynnik_ number := 1;

begin

<<silnia>>

iloraz_ := iloraz_ * czynnik_;

czynnik_ := czynnik_ + 1;

if czynnik_ <= &Liczba

then

goto silnia;

end if;

insert into uwaga (komunikat) values('To jest '||'&Liczba'||'! : '||to_char(iloraz_));

end;

select * from uwaga;

delete from uwaga;

set verify on

set feedback on

set echo on

Instrukcja pusta NULL

Nie robi nic

Przekazuje sterowanie do następnej instrukcji

Jest usywana dla poprawienia czytelności programu

Przykład

BEGIN

IF zawod_ = 'SALESMAN'

THEN GOTO oblicz_premie;

ELSE NULL;

END IF;

EXCEPTION

WHEN OTHERS THEN NULL;

END;



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 616
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved