Forum Moderators: open

Message Too Old, No Replies

Syntax error in stored procedure MySQL/PHP

Syntax error in phpmyadmin and MySQL Query Browser, and none in console

         

Marino

3:01 pm on Jul 7, 2008 (gmt 0)

10+ Year Member



Hello all,

It's tedious, my very first stored procedure is... messy.
I've got a syntax error in phpmyadmin and MySQL Query Browser, and none in console (?)

Here is the code:

DELIMITER //
CREATE PROCEDURE storedp.checkInSites(OUT dn VARCHAR(255))
BEGIN
DECLARE val VARCHAR(255);
DECLARE c CURSOR FOR SELECT storedp.parasites.dn FROM storedp.parasites WHERE 1=1 LIMIT 0,100;
DECLARE EXIT HANDLER FOR NOT FOUND BEGIN END;

SET sql_mode='ansi';
SET dn='';

OPEN c;

SET @x = 0;
REPEAT
SET @x = @x + 1;
FETCH c INTO val;
SET dn=CONCAT('dn is ',val);
UNTIL @x > 11 END REPEAT;
CLOSE c;
END
//
DELIMITER ;

The error in phpmyadmin is the following :

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 storedp.checkInSites(OUT dn VARCHAR(255))
BEGIN
D' at line 1

I also tried to generate it through PHP :

$connection=mysql_connect('localhost','storedp','storedp');
mysql_select_db('storedp',$connection);

$query="
DELIMITER //
CREATE PROCEDURE storedp.checkInSites(OUT dn VARCHAR(255))
BEGIN
DECLARE val VARCHAR(255);
DECLARE c CURSOR FOR SELECT storedp.parasites.dn FROM storedp.parasites WHERE 1=1 LIMIT 0,100;
DECLARE EXIT HANDLER FOR NOT FOUND BEGIN END;

SET sql_mode='ansi';
SET dn='';

OPEN c;

SET @x = 0;
REPEAT
SET @x = @x + 1;
FETCH c INTO val;
SET dn=CONCAT('dn is ',val);
UNTIL @x > 11 END REPEAT;
CLOSE c;
END
//
DELIMITER ; ";

echo "<pre>".$query."</pre>";
mysql_query($query) or die(mysql_error());
mysql_close($connection);

But the result is the same... Any help appreciated. Thanks in advance.

Marino

Marino

9:27 am on Jul 8, 2008 (gmt 0)

10+ Year Member



Well, well... This error is due to a version problem. I use MySQL 5.0.51a-3Ubuntu5 and MySQL Query Browser 1.2.12 and there seems to be some incompatibility. MySQL Query Browser will not recognize the DELIMITER command.

Let's wait for the next version... *Sigh*