Hello.
Surround your code inside the IF statement with BEGIN...END. For example
this works for me:
drop procedure if exists testcursor;
DELIMITER //
CREATE PROCEDURE testcursor(IN city_name varchar(255))
DETERMINISTIC
BEGIN
declare tval int;
IF (INSTR(city_name, ',') > 0) THEN
begin
DECLARE cur_neighborhood CURSOR FOR
SELECT DISTINCT neighborhood
FROM listing
WHERE FIND_IN_SET(city, city_name);
open cur_neighborhood;
FETCH cur_neighborhood into tval;
close cur_neighborhood;
select tval;
end;
ELSE
begin
DECLARE cur_neighborhood CURSOR FOR
SELECT DISTINCT neighborhood
FROM listing WHERE city =city_name;
end;
select "goodby";
END IF;
END;
//
delimiter ;
call testcursor("test1,ts");
CREATE TABLE `listing` (
`neighborhood` varchar(255) default NULL,
`city` varchar(255) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin2
mysql> select * from listing;
+--------------+------+
| neighborhood | city |
+--------------+------+
| 1 | ts |
+--------------+------+
+------------------+
| version() |
+------------------+
| 5.0.16-debug-log |
+------------------+
Tripp Bishop wrote:
> Howdy all.
>
> I need to define a cursor in a stored procedure but I
> don't know what the nature of the select statement is
> going to be until runtime. I need to do something like
> the code below:
>
> IF (INSTR(city_name, ',') > 0) THEN
> DECLARE cur_neighborhood CURSOR FOR
> SELECT DISTINCT neighborhood FROM listing WHERE
> FIND_IN_SET(city, city_name);
> ELSE
> DECLARE cur_neighborhood CURSOR FOR
> SELECT DISTINCT neighborhood FROM listing WHERE
> city =
> city_name;
> END IF;
>
> MySQL doesn't like this syntax. Is there a way that I
> can accomplish this?
>
> Cheers,
>
> Tripp
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
>
--
For technical support contracts, goto https://order.mysql.com/?ref=ensita
This email is sponsored by Ensita.NET http://www.ensita.net/
__ ___ ___ ____ __
/ |/ /_ __/ __/ __ \/ / Gleb Paharenko
/ /|_/ / // /\ \/ /_/ / /__ [EMAIL PROTECTED]
/_/ /_/\_, /___/\___\_\___/ MySQL AB / Ensita.NET
<___/ www.mysql.com
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]