DELIMITER $$
USE `gltltd_comersant`$$
DROP PROCEDURE IF EXISTS `filesedit_getLetter`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `filesedit_getLetter`(IN fieldName VARCHAR(255), IN loginName VARCHAR(255))
BEGIN
SELECT UPPER(SUBSTR(fieldName,1,1)) AS letter FROM users INNER JOIN mod_filesedit_user_atrib ON (users.id = mod_filesedit_user_atrib.id_users) INNER JOIN mod_filesedit ON (mod_filesedit.id = mod_filesedit_user_atrib.id_mod_filesedit) WHERE (users.login = loginName) GROUP BY UPPER(SUBSTR(fieldName,1,1)) ORDER BY UPPER(SUBSTR(fieldName,1,1));
END$$
DELIMITER ;
Хранимые процедуры MySQL - переменные
Код:
Вызываю ее:
Код:
CALL filesedit_getLetter('mod_filesedit.l_name','userName')
Подскажите пожалуйста как в процедуре, в запросе использовать первый параметр fieldName, как название поля таблицы.
Заранее спасибо!
Пример:
Код:
CREATE TABLE test(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, test text);
INSERT INTO test(test) VALUES ('hello'),('ololo'),('bugaga');
delimiter $$
CREATE PROCEDURE proc1(IN fieldname text,IN param2 text)
BEGIN
SET @s=concat('select ',fieldname,' from test where test.test like \'',param2,'\'');
PREPARE mselect FROM @s;
EXECUTE mselect;
deallocate PREPARE mselect;
END$$
delimiter ;
CALL proc1('id','%lo%');
INSERT INTO test(test) VALUES ('hello'),('ololo'),('bugaga');
delimiter $$
CREATE PROCEDURE proc1(IN fieldname text,IN param2 text)
BEGIN
SET @s=concat('select ',fieldname,' from test where test.test like \'',param2,'\'');
PREPARE mselect FROM @s;
EXECUTE mselect;
deallocate PREPARE mselect;
END$$
delimiter ;
CALL proc1('id','%lo%');
//А топик бы перенести в Базы данных и язык SQL
Спасибо! Выручили!