Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Poziv procedure - razlika između @status i status

[es] :: MySQL :: Poziv procedure - razlika između @status i status

[ Pregleda: 2687 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Poziv procedure - razlika između @status i status15.11.2010. u 12:50 - pre 163 meseci
Code (sql):
-- --------------------------------------------------------------------------------
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`pravni`@`localhost` PROCEDURE `SP_NASTAVNIK_FUNKCIJA_INSERT`(OUT p_status INT, OUT p_poruka VARCHAR(255), IN p_NastavnikID INT, IN p_NazivFunkcije VARCHAR(30), IN p_DatumIzboraNaFunkciju DATE, IN p_DatumOd DATE, IN p_DatumDo DATE)
BEGIN
    DECLARE v_FunkcijaID INT;
    DECLARE exit handler FOR sqlexception
    BEGIN
        ROLLBACK;
        SET p_poruka='Greška! Unos podataka nije izvršen.';
        SET p_status=0;
    END;
    SET names utf8;
    SET v_FunkcijaID=F_GET_FUNKCIJA_ID(p_NazivFunkcije);
    SET autocommit=0;
    START TRANSACTION;
    INSERT INTO NASTAVNIK_FUNKCIJA(NastavnikID, FunkcijaID, DatumIzboraNaFunkciju, DatumOd, DatumDo) VALUES (p_NastavnikID, v_FunkcijaID, p_DatumIzboraNaFunkciju, p_DatumOd, p_DatumDo);
    commit;
    SET p_poruka='Unos podataka je uspešno izvršen!';
    SET p_status=1;

END
 


Imam i jednu proceduru kojom pozivam ovu proceduru (radi testiranja):

Code (sql):
-- --------------------------------------------------------------------------------
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`root`@`%` PROCEDURE `new_routine`()
BEGIN
CALL sluzba.SP_NASTAVNIK_FUNKCIJA_INSERT(@p_status, @p_poruka, 179, 'Šef katedre', '2010-11-1', '2010-11-1', '2010-11-14');
SELECT @p_status, @p_poruka;

END
 


E sad kad ovako pozovem pojavim mi se poruka p_status - blob i p_poruka - ?, 'Greška! Unos podataka nije izvršen.'


Ako izmenim ovu prethodnu proceduru u:
Code (sql):
-- --------------------------------------------------------------------------------
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`root`@`%` PROCEDURE `new_routine`()
BEGIN
DECLARE p_status INT;
DECLARE p_poruka VARCHAR(255);
CALL sluzba.SP_NASTAVNIK_FUNKCIJA_INSERT(p_status, p_poruka, 179, 'Šef katedre', '2010-11-1', '2010-11-1', '2010-11-14');
SELECT p_status, p_poruka;

END
 

Onda mi se lepo ispisuje p_status - 0 i p_poruka - ?, 'Greška! Unos podataka nije izvršen.'


Primećujete da je razlika što u prvom pozivu mi je p_status-blob a u drugom p_status - 0.


U čemu je fora sa ovim znakom @ ispred?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Poziv procedure - razlika između @status i status15.11.2010. u 16:51 - pre 163 meseci
@X je varijabla
X je ime kolone
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Poziv procedure - razlika između @status i status16.11.2010. u 17:03 - pre 163 meseci
Ja sam mislio da su mi svi parametri u proceduri neke promenljive. Ne razumem ovo što kažeš da je X u stvari kolona u tabeli.
Najviše me buni što mi u slučaju kada pozivam sa:
select @p_status, umesto 0 ili 1 vraća BLOB. U čemu može da bude problem?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Poziv procedure - razlika između @status i status16.11.2010. u 18:29 - pre 163 meseci

Citat:

Code:

...
call sluzba.SP_NASTAVNIK_FUNKCIJA_INSERT(@p_status, @p_poruka, 179, 'Šef katedre', '2010-11-1', '2010-11-1', '2010-11-14');
select @p_status, @p_poruka;
...



ovde je @p_status i @p_poruka user defined variable. Te varijable su "connection specific" (dakle dele se unutar jedne konekcije)

Citat:

Code:

...
declare p_status int;
declare p_poruka varchar(255);
call sluzba.SP_NASTAVNIK_FUNKCIJA_INSERT(p_status, p_poruka, 179, 'Šef katedre', '2010-11-1', '2010-11-1', '2010-11-14');
select p_status, p_poruka;
...



ovde su p_stats i p_poruka deklarisani kao varijable u stored proceduri (postoje samo unutar stored procedure i ne van nje)

@p_status ce postojati i kada izadjes iz procedure
p_status nece
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Poziv procedure - razlika između @status i status16.11.2010. u 22:48 - pre 163 meseci
Ne znam u čemu je caka, kad probam preko vorkbenča prvi primer sa linka koji si mi dao:
SET @t1=1, @t2=2, @t3:=4;
SELECT @t1, @t2, @t3, @t4 := @t1+@t2+@t3;

dobijam sledeće:




A kada ukucam u komand promptu, dobijam sledeće:




[Ovu poruku je menjao biske86 dana 17.11.2010. u 00:02 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Poziv procedure - razlika između @status i status16.11.2010. u 22:56 - pre 163 meseci
Code:

mysql> SET @t1=1, @t2=2, @t3:=4;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @t1, @t2, @t3, @t4 := @t1+@t2+@t3;
+------+------+------+--------------------+
| @t1  | @t2  | @t3  | @t4 := @t1+@t2+@t3 |
+------+------+------+--------------------+
|    1 |    2 |    4 |                  7 | 
+------+------+------+--------------------+
1 row in set (0.00 sec)



Prikačeni fajlovi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Poziv procedure - razlika između @status i status16.11.2010. u 22:57 - pre 163 meseci
aj ovako - koji ti je server sa druge strane? nesto mnogo cesto ti imas te blobove niodakle

Prikačeni fajlovi
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Poziv procedure - razlika između @status i status16.11.2010. u 23:04 - pre 163 meseci
Znači problem mi je što u ovom primeru sa linka koji si mi dao iz nekog razloga workbench ne prikazuje 1, 2, 4 već BLOB.

Kada sam uradio CAST(@varijabla AS UNSIGNED) onda vraća vrednost kao što bi i trebalo.
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Poziv procedure - razlika između @status i status16.11.2010. u 23:05 - pre 163 meseci
Znači problem mi je što u ovom primeru sa linka koji si mi dao iz nekog razloga workbench ne prikazuje 1, 2, 4 već BLOB.

Kada sam uradio CAST(@varijabla AS UNSIGNED) onda vraća vrednost kao što bi i trebalo.
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Poziv procedure - razlika između @status i status16.11.2010. u 23:07 - pre 163 meseci
Server je 5.0.45.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Poziv procedure - razlika između @status i status16.11.2010. u 23:16 - pre 163 meseci
to je neki problem sa konektorom i prastarim bibliotekama od 5.0.xx ... 5.0.xx je unsuported vec godinu dana ... ajde bar predji na 5.1 ako vec neces da predjes na 5.5 ..
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Poziv procedure - razlika između @status i status17.11.2010. u 00:10 - pre 163 meseci
Prešao bi ja na 5.5 ali ne zavisi od mene, ja sam samo developer u ovom projektu. Probaću da izvršim pritisak administratora da vidi nešto po tom pitanju..
Mislim ako će da mi reši problem sigurno ćemo preći..
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Poziv procedure - razlika između @status i status17.11.2010. u 04:59 - pre 163 meseci
http://www.mysql.com/about/legal/lifecycle/

5.0 GA: 2005-10-24 Active support ends: 2009-12-31

nemam nigde ovde 5.0 da probam .. generalno ne bi smeo da imas taj problem koji imas, iz nekog razloga WB vidi rezultat tih varijabli kao blob ... da li si probao heidisql ili neki drugi klijent?

EDIT: Evo sada sam overio, to je jos jedan od mnogih bagova na 5.0, server za taj select vraca BINARY fleg za prva tri rezultata i zato ti WB prikazuje da je to blob.


Code:

$ bin/mysql -uroot --column-type-info test

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.92-debug Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET @t1=1, @t2=2, @t3:=4; SELECT @t1, @t2, @t3, @t4 := @t1+@t2+@t3;
Query OK, 0 rows affected (0.00 sec)

Field   1:  `@t1`
Catalog:    `def`
Database:   ``
Table:      ``
Org_table:  ``
Type:       VAR_STRING
Collation:  binary (63)
Length:     20
Max_length: 1
Decimals:   0
Flags:      BINARY 

Field   2:  `@t2`
Catalog:    `def`
Database:   ``
Table:      ``
Org_table:  ``
Type:       VAR_STRING
Collation:  binary (63)
Length:     20
Max_length: 1
Decimals:   0
Flags:      BINARY 

Field   3:  `@t3`
Catalog:    `def`
Database:   ``
Table:      ``
Org_table:  ``
Type:       VAR_STRING
Collation:  binary (63)
Length:     20
Max_length: 1
Decimals:   0
Flags:      BINARY 

Field   4:  `@t4 := @t1+@t2+@t3`
Catalog:    `def`
Database:   ``
Table:      ``
Org_table:  ``
Type:       LONGLONG
Collation:  binary (63)
Length:     22
Max_length: 1
Decimals:   0
Flags:      BINARY NUM 


+------+------+------+--------------------+
| @t1  | @t2  | @t3  | @t4 := @t1+@t2+@t3 |
+------+------+------+--------------------+
| 1    | 2    | 4    |                  7 | 
+------+------+------+--------------------+
1 row in set (0.01 sec)


Kao sto vidis, greska je do 5.0 (bug za koji niko vise ne brine posto je jeli 5.0 odavno zaboravljen).

inace, u WB-u
SQL Editor tab, Treat BINARY/VARBINARY as nonbinary character string - cekiras ovo i bas te briga



[Ovu poruku je menjao bogdan.kecman dana 17.11.2010. u 06:12 GMT+1]

Prikačeni fajlovi
 
Odgovor na temu

Shinhan
PHP programmer
Subotica

Član broj: 12327
Poruke: 372
*.static.isp.telekom.rs.

Jabber: shinhan@elitesecurity.org
ICQ: 400847988


+4 Profil

icon Re: Poziv procedure - razlika između @status i status17.11.2010. u 07:10 - pre 163 meseci
"inace, u WB-u
SQL Editor tab, Treat BINARY/VARBINARY as nonbinary character string - cekiras ovo i bas te briga"

YAY, thanks for the tip :)

Mene uvek nerviralo kad dobijem BLOB, obično za group_concat rezultate, sad znam kako da to isključim :3

(Server nam je 5.1)
"Common sense is not so common." - Voltaire
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Poziv procedure - razlika između @status i status17.11.2010. u 07:35 - pre 163 meseci
group concat mislim da vraca binary flag i na 5.5 to valjda tako treba po standardu
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Poziv procedure - razlika između @status i status17.11.2010. u 17:43 - pre 163 meseci
U HeidiSQL mi vraća ispravno, kako bi i trebalo. Meni ovde workbench i ne igra ulogu, meni je najbitnije šta vraća PHP-u u aplikaciji. Problem mi je što u aplikaciji proveravam da li je status 0 ili 1 i izbacujem poruku o grešci. Međutim podaci se ili upišu u tabelu ili ne upišu a poruka mi se ne javlja. Probaću da pozovem ovu proceduru iz obične php skripte pa ću da javim šta nije u redu. Inače da li je ono što mi se pojavljuje u mysql programu u stvari ono što dobija i php ili ipak moram da proverim preko php-a dikektno?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Poziv procedure - razlika između @status i status17.11.2010. u 21:48 - pre 163 meseci
heidi izgleda po defaultu ima ono da varbinary tretira kao txt ... ali svejedno da li je binary flag tu ili ne, ti iz php-a vidis da li je unutra 1 ili 0 potpuno je nebitno da li je polje markirano kao binarno ili ne ... tako da nemas problem

doduse, ako odradite upgrade na 5.5 imas signal i resignal pa ne moras da izvodis kerefeke kao sto ovde moras u 5.0 i 5.1 ... no .. to je druga prica ..

javi ako te zeza iz php-a - ne bi smelo!
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Poziv procedure - razlika između @status i status17.11.2010. u 23:28 - pre 163 meseci
Isprobao sam preko php-a sve je u redu..
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Poziv procedure - razlika između @status i status17.11.2010. u 23:52 - pre 163 meseci
ma da, php ne tangira 2% binary bit .. kao ni vecina klijenata .. WB se "pravi pametan" pa ga cita (hvala bogu moze da se iskljuci ta "pamet") ... generalno je setovanje binarnog bita za @x pogresno i ispravljeno je kasnije .. no u 5.0 je tako kako je ..


 
Odgovor na temu

[es] :: MySQL :: Poziv procedure - razlika između @status i status

[ Pregleda: 2687 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.