Pomoc izradi domaceg zadatka u MySQL-u

marecare

Active member
Joined
May 9, 2014
Messages
1,436
Reaction score
6
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
 
Last edited:

Neofit

Member
Joined
Apr 1, 2015
Messages
38
Reaction score
0
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’’);
 
Last edited:

marecare

Active member
Joined
May 9, 2014
Messages
1,436
Reaction score
6
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!?
 
Last edited:

Commander

Well-known member
Staff member
Joined
Jan 13, 2012
Messages
9,235
Reaction score
530
Mare jel to pohađaš neki kurs ili si upisao školicu? :cvike:
 
Last edited:

Neofit

Member
Joined
Apr 1, 2015
Messages
38
Reaction score
0
alt
marecare:
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!?
Ovo што сам написао је PL/SQL (Procedural language exstension for SQL) верујем да се може користити без проблема на mysql базама. IS у PL служи да би се декларисале променљиве пре извршног блока, нисам сигуран али мислим да се обзиром да нисмо дефинисали ни једну променљиву, ако не рачунамо оне у аргументима функције, можда може и да се изостави.
 
Last edited:

osx

Member
Joined
Jan 17, 2014
Messages
99
Reaction score
0
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
 
Last edited:
S

system

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)
 

Commander

Well-known member
Staff member
Joined
Jan 13, 2012
Messages
9,235
Reaction score
530
Jel tebi treba pomoć oko zadatka ili ti treba da ti neko uradi ceo zadatak?
 
Last edited:
Top