CATEGORII DOCUMENTE |
Bulgara | Ceha slovaca | Croata | Engleza | Estona | Finlandeza | Franceza |
Germana | Italiana | Letona | Lituaniana | Maghiara | Olandeza | Poloneza |
Sarba | Slovena | Spaniola | Suedeza | Turca | Ucraineana |
DOCUMENTE SIMILARE |
|
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.
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
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
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
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
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 |
Vizualizari: 616
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved