Как отправить имя таблицы как процедуру Mysql Store - PullRequest
0 голосов
/ 07 июля 2011

Я пишу процедуру хранения. Но она не принимает имя таблицы в качестве параметра. Теперь, как я отправляю имя таблицы как aparameter. Пожалуйста, смотрите мой процесс ниже:

DELIMITER $$
USE `db_test`$$
DROP PROCEDURE IF EXISTS `test_proc`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `test_proc`(IN newsInfoTable VARCHAR(100))
BEGIN              
    SELECT news INTO @news
    FROM newsInfoTable
    WHERE CURDATE()=DATE_FORMAT(date_time,'%Y-%m-%d') 
    ORDER BY date_time DESC LIMIT 1;
    SELECT @news;
 END$$
DELIMITER ;

Параметр вызова:

USE db_test;
CALL test_proc('tbl_news_list');

Но ОШИБКА: Таблица 'db_test.newsinfotable' не существует

Как решить эту проблему. Помогите.

1 Ответ

1 голос
/ 07 июля 2011

Используйте подготовленные операторы в теле процедуры:

SET @s = CONCAT('SELECT ... FROM ', newsInfoTable);
PREPARE stmt FROM @s;
EXECUTE stmt;
//.....
DEALLOCATE PREPARE stmt;

Ваш код должен выглядеть следующим образом:

SET @sql_stam = CONCAT('SELECT news INTO @news FROM ',newsInfoTable,  
 ' WHERE DATE_FORMAT(date_time,\'%Y-%m-%d\') 
ORDER BY date_time DESC LIMIT 1');
...
SELECT @news;

Кроме того, я не вижу причинвам нужно использовать @news переменную ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...