MySQL Forums
Forum List  »  Stored Procedures

Re: How to treat a parameter as array in stored procedure?
Posted by: William Chiquito
Date: June 05, 2007 07:45PM

Hi Cong,

Try:
DROP TABLE IF EXISTS `mytable`;

CREATE TABLE `mytable` (
  `revision` int(11) default NULL,
  `name` varchar(20) default NULL,
  `path` varchar(20) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

/*Data for the table `mytable` */

insert  into `mytable`(`revision`,`name`,`path`) values (1,'file1.h','dir1'),(2,'file2.h','dir2');

/*Table structure for table `mytable1` */

DROP TABLE IF EXISTS `mytable1`;

CREATE TABLE `mytable1` (
  `name` varchar(20) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

/*Data for the table `mytable1` */

insert  into `mytable1`(`name`) values ('file1.h'),('file2.h'),('file3.h');
A option is:
/*!50003 DROP PROCEDURE IF EXISTS  `mysp` */;

DELIMITER $$

/*!50003 CREATE PROCEDURE `mysp`()
BEGIN
	SELECT * FROM mytable WHERE name IN (SELECT name FROM mytable1);
END */$$
DELIMITER ;
Another option is:
/*!50003 DROP PROCEDURE IF EXISTS  `mysp` */;

DELIMITER $$

/*!50003 CREATE PROCEDURE `mysp`()
BEGIN
	DECLARE parameter VARCHAR(4000);
	SELECT IFNULL(CONCAT('''', GROUP_CONCAT(name SEPARATOR ''', '''), ''''), 'NULL') INTO parameter FROM mytable1;
	SET @qry = CONCAT('SELECT * FROM mytable WHERE name IN (', parameter, ')');	
	PREPARE stmt FROM @qry;
	EXECUTE stmt;
	DEALLOCATE PREPARE stmt;
END */$$
DELIMITER ;



Edited 1 time(s). Last edit at 06/05/2007 07:45PM by William Chiquito.

Options: ReplyQuote


Subject
Views
Written By
Posted
Re: How to treat a parameter as array in stored procedure?
5672
June 05, 2007 07:45PM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.