Dobrodošli na FOSS Srbija

Free and Opensource Srbija je skup entuzijasta i ljubitelja slobodnog i otvorenog koda. Cilj nam je okupiti sve istomišljenike na jednom mestu i stvoriti najveći globalni OpenSource projekat u Srbiji i šire!

  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Pomoc izradi domaceg zadatka u MySQL-u

Discussion in 'Programiranje' started by marecare, 27.04.2015.

  1. marecare

    Premium Donator

    Joined:
    09.05.2014
    Messages:
    1,349
    Likes Received:
    885
    Okruženje:
    Cinnamon
    Sistem:
    Mint
    Drugari, treba mi pomoc. Radim domaci i treba da kreiram Stored Procedures za izmenu podataka u tabeli "korisnici" u bazi podataka "drustvene mreze" a u kolonama: "ime_korisnika, prezime_korisnika, korisnicko_ime"
    E sad ja sam krenuo nesto da cukam i ne znam da li sam uopste na dobrom putu, a i nije mi bas najjasnije sta treba da upisem u naredbi na mestima gde sam ostavio ????? kako bih menjao podatke bilo kojeg korisnika u tabeli.
    Evo moje sintakse pa pomozite ako mozete:

    CREATE PROCEDURE `izmena_podataka` ()
    BEGIN
    UPDATE korisnici SET ime_korisnika="?????", prezime_korisnika="?????", korisnicko_ime="?????"
    WHERE ime_korisnika="?????" AND prezime_korisnika="?????" AND korisnicko_ime="?????"
    END

    Hvala unapred
     
  2. Neofit

    Korisnik

    Joined:
    01.04.2015
    Messages:
    29
    Likes Received:
    14
    Sistem:
    Mint
    CREATE PROCEDURE izmena_podataka
    (staro_ime IN korisnici.ime_korisnika%TYPE,
    staro_prezime IN korisnici.prezime_korisnika%TYPE,
    staro_korisnicko_ime in korisnici.korisnicko_ime%TYPE,
    novo_ime IN korisnici.ime_korisnika%TYPE,
    novo_prezime IN korisnici.prezime_korisnika%TYPE,
    novo_korisnicko_ime in korisnici.korisnicko_ime%TYPE)
    IS
    BEGIN
    UPDATE korisnici
    SET ime_korisnika=novo_ime, prezime_korisnika=novo_prezime, korisnicko_ime=novo_korisnicko_ime
    WHERE ime_korisnika=staro_ime, prezime_korisnika=staro_prezime, korisnicko_ime=staro_korisnicko_ime;
    END;

    A sad malo komentara:
    prvo definisali smo proceduru i u njoj naveli parametre koje koristimo pri pozivu, oni su smešteni u zagradi, prva tri parametra smo definisali kao stare parametre, znači parametre na osnovu kojih tražimo dati zapis u tabeli. Ovde bih napravio malu digresiju, ako je korisničko ime jedinstveno i ne ponavlja se, a ne bi trebalo, onda smatram da stributi staro_ime i staro_prezime se mogu obrisati, kako u zagradi sa atributima tako i u telu procedure, znači dovoljan je samo parametar korisničko ime da bi se našao zapis u tabeli koji menjamo, na osnovu njega ćemo uneti i novo ime i novo prezime i noovo korisničko ime u datom redu. Ostala tri komentara su nove vrednosti koje unosimo i koje menjaju stare. Ovde sam u definisanju argumenata koristio %TYPE, što znači da vrednost koju unosimo treba da bude po difoltu tip podataka koji je definisan u datoj koloni tabele, npr

    novo_prezime IN korisnici.prezime_korisnika%TYPE

    znači ako je kolona prezime_korisnika u tabeli korisnici definisana kao VARCHAR(20) to znači da kada unosimo vrednost argumenta novo_prezime ono mora biti isto tipa VARCHAR(20)



    Znaci ako hoceš da menjaš ime, prezime i korisničko ime npr osobe koja je u tabeli sa podacima Dragutin Dimitrijevic Apis, sa npr podacima Aleksandar Petrovic Neofit ti jednostavno pozivaš ovu proceduru sa:

    EXECUTE izmena_podataka(''Dragutin'',''Dimitrijevic'',''Apis'',''Aleksandar'',''Petrovic'',''Neofit'');
     
    #2 Neofit, 29.04.2015
    Last edited: 29.04.2015
    Vladimir likes this.
  3. marecare

    Premium Donator

    Joined:
    09.05.2014
    Messages:
    1,349
    Likes Received:
    885
    Okruženje:
    Cinnamon
    Sistem:
    Mint
    Hvala puno Neofit. Sada cu probati.
    Ovo za %TYPE nisam znao i jos nismo ucili tako da cu ja raditi pojedinacno i pisati tip podatka koji je za tu kolonu definisan.
    Takodje, do sada nismo koristili ovo IS sto si ti napisao pre kljucne reci BEGIN, ne znam cemu to sluzi!?
     
    Neofit likes this.
  4. Vladimir

    Staff Member

    Joined:
    12.01.2012
    Messages:
    9,481
    Likes Received:
    4,217
    Location:
    /home
    Okruženje:
    Kde5
    Sistem:
    CentOS
    Mare jel to pohađaš neki kurs ili si upisao školicu? :cvike:
     
    Collapse Signature Expand Signature
  5. Neofit

    Korisnik

    Joined:
    01.04.2015
    Messages:
    29
    Likes Received:
    14
    Sistem:
    Mint
    Ovo што сам написао је PL/SQL (Procedural language exstension for SQL) верујем да се може користити без проблема на mysql базама. IS у PL служи да би се декларисале променљиве пре извршног блока, нисам сигуран али мислим да се обзиром да нисмо дефинисали ни једну променљиву, ако не рачунамо оне у аргументима функције, можда може и да се изостави.
     
  6. osx

    osx
    Korisnik

    Joined:
    17.01.2014
    Messages:
    92
    Likes Received:
    12
    Location:
    bor
    Sistem:
    Ostalo
    mislim da ne mozes koristiti PL/SQL u MySQL bazi podataka

    PL/SQL ti je Oracle-ovo prosirenje SQL-a u njihovoj Oracle relacionoj bazi podataka

    nesto slicno PL/SQL-u ti je i Transact-SQL, koji je M$-ovo prosirenje standardnog SQL u M$ SQL Serveru
     
  7. Daniel

    Guest

    Potrebna mi je pomoc oko ovog zadatka.
    U bazi podataka postoji sledeca tabela:

    id int
    username varchar
    balance numeric(9,2)

    Kreirati uskladistenu procuduru koja ce prebacivati novac sa jednog na drugog korisnika (kolona balance)
    Procedura treba da prihvata tri parametra:
    Prvi parametar ce biti id korisnika kome ce biti oduzet novac
    Drugi parametar id korisnika kome se dodeljuje novac
    Treci parametar ce biti suma koja ce biti oduzeta od jednog i dodeljena drugom korisniku

    Procedura mora proveriti da li korisnik ima dovoljno novca na racunu pre nego sto transakcija bude izvrsena (balance izvornog korisnika ne sme da ode u minus)
     
  8. Vladimir

    Staff Member

    Joined:
    12.01.2012
    Messages:
    9,481
    Likes Received:
    4,217
    Location:
    /home
    Okruženje:
    Kde5
    Sistem:
    CentOS
    Jel tebi treba pomoć oko zadatka ili ti treba da ti neko uradi ceo zadatak?
     
    Collapse Signature Expand Signature
SSL Certificate Biblioteka++ Tor anonimnost Cyberghost vyprvpn