Садржај
1 Релационе базе података
1.0 1 Релационе базе података
1.0 2 Релационе базе података - квиз
1.0 3 Веза један према више
1.0 4 Веза један према више - квиз
1.0 5 Веза више према више
1.0 6 Веза више према више - квиз
1.0 7 Алат за пројектовање
1.0 8 СУБП
1.0 9 Креирање базе на други начин
1.0 10 Још неке SQL команде
1.1 1 Упит SELECT
1.1 2 Упит SELECT - упит из једне табеле - задаци
1.1 3 Упит SELECT - упит из једне табеле - квиз
1.1 4 Упит SELECT - функције и подупити - задаци
1.1 5 Упит SELECT - функције и подупити - квиз
1.1 6 Упит SELECT - спајање - задаци
1.1 7 Упит SELECT - спајање - квиз
1.1 8 Упит SELECT - нерешени задаци
1.2 1 База података за библиотеку - креирање базе
1.2 2 БП Библиотека - Упит SELECT - упит из једне табеле - задаци
1.2 3 БП Библиотека - Упит SELECT - упит из једне табеле - нерешени задаци
1.2 4 БП Библиотека - Упит SELECT - спајање - задаци
1.2 5 БП Библиотека - Упит SELECT - спајање - нерешени задаци
1.2 6 БП Библиотека - Упит SELECT - функције и подупити - задаци
1.2 7 БП Библиотека - Упит SELECT - функције и подупити - нерешени задаци
1.3 1 База података за возачке дозволе - креирање базе
1.3 2 БП Возачке дозволе - Дијаграм и подаци - практичан рад
1.3 3 БП Возачке дозволе - Упит SELECT - задаци
1.3 4 БП Возачке дозволе - Упит SELECT - нерешени задаци
1.4 1 БП Филмови - Креирање базе - практични рад
1.4 2 БП Филмови - Дијаграм и подаци - практични рад
1.4 3 БП Филмови - Упит SELECT - задаци
1.4 4 БП Филмови - Упит SELECT - нерешени задаци
2 Писање програма унутар система за управљање базама података
2.0 1 Процедуре и команда INSERT
2.0 2 Процедуре и команде UPDATE и DELETE
2.0 3 Процедуре и команде INSERT, UPDATE, и DELETE - квиз
2.0 4 Процедуре и тестирање програма
2.0 5 Процедуре и упит SELECT
2.0 6 Процедуре и курсор за упит SELECT
2.1 1 Функције и упит SELECT
2.1 2 Процедуре и функције са упитом SELECT - квиз
2.1 3 Процедуре и функције са упитом SELECT из једне табеле - задаци
2.1 4 Процедуре и функције са упитом и групним функцијама - задаци
2.1 5 Процедуре и функције са упитом SELECT са спајањем табела - задаци
2.1 6 Процедуре и функције са упитом - нерешени задаци
2.1 7 Формат XML
2.2 1 База података за библиотеку - Процедуре, функције и поређење различитих решења
2.2 2 Процедуре, функције и поређење различитих решења
2.2 3 Процедуре и функције са упитом SELECT из једне табеле - вежбање
2.2 4 Процедуре и функције са упитом SELECT са спајањем табела - вежбање
2.2 5 Процедуре и функције са упитом и групним функцијама и подупитима - вежбање
2.2 6 Процедуре и функције са упитом SELECT - нерешени задаци
2.3 1 База података за возачке дозволе - процедуре и функције са упитом SELECT - вежбање
2.3 2 База података за возачке дозволе - процедуре и функције - нерешени задаци
2.4 1 База података за филмове - процедуре и функције са упитом SELECT - вежбање
2.4 2 База података за филмове - процедуре и функције - нерешени задаци
3 Писање програма у програмским језицима вишег нивоа
3.0 1 Писање програма у развојном окружењу Visual Studio
3.0 2 Писање програма у развојном окружењу Visual Studio - практичан рад
3.0 3 Писање програма у развојном окружењу Visual Studio - процедуре
3.0 4 Писање програма у развојном окружењу Visual Studio - квиз
3.1 1 Угнежђени упит SELECT унутар програма
3.1 2 Угнежђени упит SELECT унутар програма - задаци
3.1 3 Позив процедуре унутар програма
3.1 4 Позив креиране функције унутар програма
3.1 5 Програм са угнежђеним командама у развојном окружењу Visual Studio - квиз
3.1 6 Програм са угнежђеним упитом SELECT из једне табеле - вежбање
3.1 7 Програм са угњежђеним упитом и групним фунцкијама - вежбање
3.1 8 Програм са угнежђеним упитом SELECT са спајањем табела - вежбање
3.1 9 Програм са класом
3.1 10 Програм са угнежђеним упитом - нерешени задаци
3.1 11 Програм са угнежђеним командама INSERT, UPDATE, и DELETE
3.2 1 База података за библиотеку - програм са угнежђеним упитом SELECT из једне табеле - задаци
3.2 2 База података за библиотеку - програм са угнежђеним упитом SELECT - вежбање
3.2 3 База података за библиотеку - програм са угнежђеним упитом - нерешени задаци
3.3 1 База података за возачке дозволе - програм са угнежђеним упитом SELECT - вежбање
3.3 2 База података за возачке дозволе - програм са угнежђеним упитом - нерешени задаци
3.4 1 База података за филмове - програм са угнежђеним упитом SELECT - вежбање
3.4 2 База података за филмове - програм са угнежђеним упитом - нерешени задаци
4 Друга софтверска решења - СУБП Oracle
4.0 1 Oracle Apex и језик PL/SQL
4.0 2 Језик PL/SQL - задаци
4.0 3 Језик PL/SQL - квиз
4.0 4 Језик PL/SQL – нерешени задаци
4.0 5 Наредбе гранања
4.0 6 Наредбе гранања - нерешени задаци
4.0 7 Наредбе циклуса
4.0 8 Наредбе циклуса - нерешени задаци
4.1 1 База података за библиотеку - практичан рад
4.1 2 Наредба SELECT INTO
4.1 3 Наредба SELECT INTO - zadaci
4.1 4 Наредба SELECT INTO - квиз
4.1 5 Наредба SELECT INTO - вежбање
4.1 6 Наредба SELECT INTO - нерешени задаци
4.2 1 Курсори - Узимање података из више редова
4.2 2 Курсори - задаци
4.2 3 Различити начини да се реши проблем
4.2 4 Курсори - нерешени задаци
4.2 5 Курсор са параметром
4.2 6 Курсор са параметром - задаци
4.2 7 Курсор са параметром - нерешени задаци
4.2 8 Курсори - квиз
4.2 9 Курсори и гранање - задаци
4.2 10 Курсори - вежбање
4.2 11 Тренутне позајмице члана - пример
4.2 12 Спискови књига - пример
4.3 1 Процедуре и функције у СУБП-у Oracle Apex
4.3 2 Процедуре и функције - задаци
4.3 3 Процедуре и функције - нерешени задаци
4.3 4 Позајмице једне књиге - пример
4.3 5 Тренутне позајмице - пример
4.3 6 Процедуре и друге SQL команде
4.3 7 Тригери
4.3 8 Списак свих објеката у бази података
4.4 1 Креирање апликације помоћу алата App Builder
4.4 2 Додатне опције App Builder алата
4.4 3 Покретање апликације
4.4 4 Креирање нових страница у апликацији
4.4 5 Покретање раније креиране процедуре
4.4 6 Алат App Builder и XML
4.5 1 База података за салон аутомобила у СУБП-у Oracle Apex - 1. део
4.5 2 База података за салон аутомобила у СУБП-у Oracle Apex - 2. део
4.5 3 База података за салон аутомобила у СУБП-у Oracle Apex - 3. део
4.5 4 База података за продавницу - нерешени пројектни рад

Наредбе гранања - нерешени задаци

У програмима можемо да користимо наредбе гранања:

  • наредба IF

  • наредба CASE

Наредбе гранања ће бити објашњене кроз конкретне задатке.

Програми се пишу у едитору у оквиру онлајн окружења Oracle APEX, а покрећу се кликом на дугме Run:

../_images/slika_65a.jpg
  1. Креирати PL/SQL програм у којем се уносе поени које су два такмичара освојила на такмичењу из математике. Такмичари имају различит број поена. Приказати ко је од такмичара освојио већи број поена.

Услов не мора да се ставља у заграде, али је после навођења услова обавезна реч THEN. Цела наредба се завршава са END IF.

DECLARE
    poeni1 INT;
    poeni2 INT;
BEGIN
    poeni1 := :poeni_prvog_takmicara;
    poeni2 := :poeni_drugog_takmicara;
    IF poeni1 > poeni2 THEN
        DBMS_OUTPUT.PUT_LINE('Prvi takmicar ima vise poena');
    ELSE
        DBMS_OUTPUT.PUT_LINE('Drugi takmicar ima vise poena');
    END IF;
END
  1. Креирати PL/SQL програм у којем се уносе поени које је такмичар освојио на такмичењу из програмирања (од 0 до 300). Прва награда се добија са 250 поена или више, друга награда са 200 поена или више, трећа са 150 поена или више. Приказати коју награду је добио такмичар или поруку ако није освојио награду.

Први начин: Можемо да употребимо наредбу IF.

DECLARE
    poeni NUMBER(3);
BEGIN
    poeni := :poeni_takmicara;
    IF poeni >= 250 THEN
        DBMS_OUTPUT.PUT_LINE('Prva nagrada');
    ELSIF poeni >= 200 THEN
        DBMS_OUTPUT.PUT_LINE('Druga nagrada');
    ELSIF poeni >= 150 THEN
        DBMS_OUTPUT.PUT_LINE('Treca nagrada');
    ELSE
        DBMS_OUTPUT.PUT_LINE('Bez nagrade');
    END IF;
END

Други начин: Можемо да употребимо наредбу вишеструког гранања CASE. Свака грана садржи један услов.

DECLARE
    poeni NUMBER(3);
BEGIN
    poeni := :poeni_takmicara;
    CASE
    WHEN poeni >= 250 THEN
        DBMS_OUTPUT.PUT_LINE('Prva nagrada');
    WHEN poeni >= 200 THEN
        DBMS_OUTPUT.PUT_LINE('Druga nagrada');
    WHEN poeni >= 150 THEN
        DBMS_OUTPUT.PUT_LINE('Treca nagrada');
    ELSE
        DBMS_OUTPUT.PUT_LINE('Bez nagrade');
    END CASE;
END

Трећи начин: Можемо да употребимо у решењу помоћну текстуалну променљиву коју ћемо на крају да испишемо.

DECLARE
    poeni NUMBER(3);
    poruka VARCHAR2(20);
BEGIN
    poeni := :poeni_takmicara;
    CASE
    WHEN poeni >= 250 THEN
        poruka := 'Prva nagrada';
    WHEN poeni >= 200 THEN
        poruka := 'Druga nagrada';
    WHEN poeni >= 150 THEN
        poruka := 'Treca nagrada';
    ELSE
        poruka := 'Bez nagrade';
    END CASE;
    DBMS_OUTPUT.PUT_LINE(poruka);
END

Четврти начин: Поред наредбе вишеструког гранања CASE постоји и израз CASE. Овај израз има вредност која може да се додели некој променљивој, у овом случају помоћној променљивој која садржи текстуалну поруку која ће бити приказана на крају програма.

DECLARE
    poeni NUMBER(3);
    poruka VARCHAR2(20);
BEGIN
    poeni := :poeni_takmicara;
    poruka := CASE
    WHEN poeni >= 250 THEN 'Prva nagrada'
    WHEN poeni >= 200 THEN 'Druga nagrada'
    WHEN poeni >= 150 THEN 'Treca nagrada'
    ELSE 'Bez nagrade'
    END;
    DBMS_OUTPUT.PUT_LINE(poruka);
END
  1. Креирати PL/SQL програм у којем се уноси редни број дана у недељи, а приказује се назив тог дана.

DECLARE
    dan NUMBER(1);
BEGIN
    dan := TO_NUMBER(:redni_broj_dana_u_nedelji);
    CASE
    WHEN dan = 1 THEN
        DBMS_OUTPUT.PUT_LINE('Ponedeljak');
    WHEN dan = 2 THEN
        DBMS_OUTPUT.PUT_LINE('Utorak');
    WHEN dan = 3 THEN
        DBMS_OUTPUT.PUT_LINE('Sreda');
    WHEN dan = 4 THEN
        DBMS_OUTPUT.PUT_LINE('Cetvrtak');
    WHEN dan = 5 THEN
        DBMS_OUTPUT.PUT_LINE('Petak');
    WHEN dan = 6 THEN
        DBMS_OUTPUT.PUT_LINE('Subota');
    WHEN dan = 7 THEN
        DBMS_OUTPUT.PUT_LINE('Nedelja');
    ELSE
        DBMS_OUTPUT.PUT_LINE('Neispravan redni broj dana u nedelji');
    END CASE;
END

Када имамо скуп вредности неке променљиве, можемо да користимо CASE на следећи начин:

CASE naziv_promenljive
WHEN vrednost1 THEN ...
WHEN vrednost2 THEN ...
DECLARE
    dan NUMBER(1);
BEGIN
    dan := TO_NUMBER(:redni_broj_dana_u_nedelji);
    CASE dan
    WHEN 1 THEN
        DBMS_OUTPUT.PUT_LINE('Ponedeljak');
    WHEN 2 THEN
        DBMS_OUTPUT.PUT_LINE('Utorak');
    WHEN 3 THEN
        DBMS_OUTPUT.PUT_LINE('Sreda');
    WHEN 4 THEN
        DBMS_OUTPUT.PUT_LINE('Cetvrtak');
    WHEN 5 THEN
        DBMS_OUTPUT.PUT_LINE('Petak');
    WHEN 6 THEN
        DBMS_OUTPUT.PUT_LINE('Subota');
    WHEN 7 THEN
        DBMS_OUTPUT.PUT_LINE('Nedelja');
    ELSE
        DBMS_OUTPUT.PUT_LINE('Neispravan redni broj dana u nedelji');
    END CASE;
END

Трећи начин: употребом наредбе CASE и текстуалне променљиве.

DECLARE
    dan NUMBER(1);
    naziv_dana VARCHAR2(10);
BEGIN
    dan := TO_NUMBER(:redni_broj_dana_u_nedelji);
    CASE dan
    WHEN 1 THEN
        naziv_dana := 'Ponedeljak';
    WHEN 2 THEN
        naziv_dana := 'Utorak';
    WHEN 3 THEN
        naziv_dana := 'Sreda';
    WHEN 4 THEN
        naziv_dana := 'Cetvrtak';
    WHEN 5 THEN
        naziv_dana := 'Petak';
    WHEN 6 THEN
        naziv_dana := 'Subota';
    WHEN 7 THEN
        naziv_dana := 'Nedelja';
    ELSE
        naziv_dana := 'Neispravan redni broj dana u nedelji';
    END CASE;
    DBMS_OUTPUT.PUT_LINE(naziv_dana);
END

Можемо да погледамо још једно решење – програм у којем користимо израз CASE.

DECLARE
    dan NUMBER(1);
    naziv_dana VARCHAR2(10);
BEGIN
    dan := TO_NUMBER(:redni_broj_dana_u_nedelji);
    naziv_dana := CASE dan
    WHEN 1 THEN 'Ponedeljak'
    WHEN 2 THEN 'Utorak'
    WHEN 3 THEN 'Sreda'
    WHEN 4 THEN 'Cetvrtak'
    WHEN 5 THEN 'Petak'
    WHEN 6 THEN 'Subota'
    WHEN 7 THEN'Nedelja'
    ELSE 'Neispravan redni broj dana u nedelji' END;
    DBMS_OUTPUT.PUT_LINE(naziv_dana);
END
(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+