Käytän 5.0.51b:tä WAMPista, ja yritän konsolista luoda stored procedurea, vaan eipä onnistu.
Tässä ensimmäinen yritys:
CREATE PROCEDURE newaccount (IN p_username CHAR(20))
BEGIN
INSERT INTO Account (UserName) VALUES (p_username);
END
Taulun määrittely on:
CREATE TABLE Account (
UserID INT NOT NULL AUTO_INCREMENT,
UserName CHAR(20) NOT NULL,
UserPass CHAR(20),
PRIMARY KEY (UserID),
UNIQUE INDEX UserName (UserName),
);
Edellä mainittu koodinpätkä tuottaa seuraavan virheilmoituksen:
ERROR 1064 (42000): 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 '' at line 3
Minusta syntaksi on oikein ja jopa identtinen muutamaan katsomaani esimerkkiin verrattuna, mutta ei vaan toimi.
Mikä mahtaa mättää?
Tässä ensimmäinen yritys:
CREATE PROCEDURE newaccount (IN p_username CHAR(20))
BEGIN
INSERT INTO Account (UserName) VALUES (p_username);
END
Taulun määrittely on:
CREATE TABLE Account (
UserID INT NOT NULL AUTO_INCREMENT,
UserName CHAR(20) NOT NULL,
UserPass CHAR(20),
PRIMARY KEY (UserID),
UNIQUE INDEX UserName (UserName),
);
Edellä mainittu koodinpätkä tuottaa seuraavan virheilmoituksen:
ERROR 1064 (42000): 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 '' at line 3
Minusta syntaksi on oikein ja jopa identtinen muutamaan katsomaani esimerkkiin verrattuna, mutta ei vaan toimi.
Mikä mahtaa mättää?
Vastaukset 3
Vanhimmat
>Mikä mahtaa mättää?
Tuo koodi toimii sellaisenaan jos ajat sen Query Browserilla. Konsoli on hieman eri tapaus kun puolipilkku toimii GO-komentona niin syntaksi särkyy.
Eli se vaihda ensin //:ksi ja lopuksi takaisin ;:ksi niin toimii ihan OK.
Tälleen
DELIMITER //
CREATE PROCEDURE `newaccount`(IN p_username CHAR(20))
BEGIN
INSERT INTO Account (UserName) VALUES (p_username);
END
//
DELIMITER ;
Sehän toimi kun junan vessa. Jotain tällaista arvelinkin syyksi, mutta hyvä että vastaus tuli kun apteekin hyllyltä.
>...tuli kun apteekin hyllyltä.
Ihan säkällä. Olin tekemässä erästä yöaikaispäivitystä ja siinä tuli luppoaikaa sen verran että harauduin tänne. ;)