problem so stored procedures
11 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Ahojte! Potrebujem poradit ohladom vytvarania ulozenych procedur v phpMyAdmin. Jednoduche procedury ako napriklad: create procedure moja_storka() select now(); v pohode idu. Ja vsak samozrejme potrebujem zlozitejsiu proceduru skladajucu sa z niekolkych prikazov. create procedure moja_storka() begin prikaz1; prikaz2; ... end Tu vsak uz vznika problem s parserom. Problemova je podkociarka na konci prikazov, ktora sa riesi zmenou oddelovaca prikazom DELIMITER. A teda ked si chcem ulozit moju proceduru, pouzijem DELIMITER $$ create procedure moja_storka() begin prikaz1; prikaz2; ... end $$ DELIMITER ; Ale vyzera to tak, akokeby som nemal prava na zmenu oddelovaca. sql hlasi: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$ CREATE PROCEDURE moja_storka() BEGIN END' at line 1 BTW: Na localhoste mam mysql-server, kde som svoju stranku vyvijal. A tam vsetko funguje bez problemov. I ked je to MySQL verzie 5, na strankach mysql som sa docital, ze aj v stvorke je implementovana podpora storiek. Ako teda nahrat zlozitejsiu storku?
-
Je tohle vůbec v MySQL4 podporováno?
-
Tom: tady uz je mysql5 :) marcel: kdyz mu vadi prikaz DELIMITER tak ho nepouzivej ne? navic DELIMITER neni ani v refmanu pro mysql5, tak nevim kde si ho vzal
-
Mike: Dobre, tak ako je mozne bez prikazu DELIMITER vlozit storku do db? Ak ju napises bez tohto prikazu, tak parser tomu nebude rozumiet. Len si skus jednoduchy priklad: CREATE PROCEDURE moja_storka() BEGIN UPDATE moja_tabulka WHERE 1=0; SELECT * from moja_tabulka; END; Parser vyhlasi syntax error.
-
1) precti si CO za chybu ti to vyhodi (chyba neni pri vytvareni procedury, ale v tom kodu) - co to ma bejt za query, to UPDATE tab WHERE 1=0 ?
-
Nie, nie, Mike, ver mi, kod sql je syntakticky aj semanticky spravne. Vlozenie procedur, kde nie je BEGIN-END blok a skladaju sa len z jedneho prikazu, funguje bez problemov. Problem nastava pri procedurach, ktore maju 2 a viac prikazov. Parser vzdy vypise syntax error 1064, ktory som popisal v prvom prispevku.
-
tak jeste jednou otevri si PMA, vyber db, klikni nahore na SQL a do pole napis ten tvuj SQL dotaz (UPDATE moje_tabulka WHERE 1=0). pak klikni Go, at se prikaz vykona. zapni mozek, kdyby to bylo spravne, tak SQL server nebude hlasit syntax error presne v tom miste kde je ta podminka WHERE 1=0 ne?
-
spravna syntaxe pro update je UPDATE tabulka SET sloupecek=nejakyvyraz [WHERE podminka] WHERE podminka je nepovinny, byt tam nemusi ale SET sloupecek tam byt MUSI
-
Jasne, uniklo mi to slovicko SET. Na tom ale nezalezi, ten priklad, ktory som napisal, bol len ilustracny. Skus si, prosim ta, vo svojom PMA vytvorit lubovolnu storku pozostavajucu z aspon dvoch prikazov. Podla mna ti to nepojde.
-
tak to se mylis. dotazu si tam muzu dat klidne 20 a jede to bez problemu
-
ja to aj tak stale neviem nejako rozbehat. skusil som napriklad: create procedure moja_storka() begin update tab1 set id=1 where id>1000; delete from tab1 where id>1000; end; a opat to dopadlo tak, ako predtym - syntax chybou: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update content_main set id=1 where id > 1000' at line 3