Использование переменной в качестве имени столбца в хранимой процедуре? - PullRequest
1 голос
/ 10 сентября 2011

Здесь я написал процедуру mysql, которая выбирает все поля типа text указанной базы данных 'wp'

, и я хочу обновить каждое текстовое поле типадобавление строки дополнительная строка через CONCAT функция.

после I вызов test2 , ошибка показывает:

Query : call test2()

Error Code : 1146
Table 'wp._tbl' doesn't exist

Execution Time : 00:00:00:000
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:000
---------------------------------------------------

mysql _tbl рассматривает как строку, но не как переменную.

Так можно ли это исправить?

code:

DELIMITER $$
USE `wp`$$
DROP PROCEDURE IF EXISTS `test2`$$
CREATE
    PROCEDURE `test2`()
    BEGIN
    DECLARE _tbl VARCHAR(100);
    DECLARE _cl VARCHAR(100);
    DECLARE notFound INT DEFAULT 0;
    DECLARE cur CURSOR FOR SELECT table_name,column_name FROM information_schema.columns WHERE table_schema = 'wp' AND data_type ='text';
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET notFound =1;
    OPEN cur;
        WHILE notFound = 0 DO
            FETCH cur INTO _tbl,_cl;
            UPDATE _tbl SET _cl = CONCAT(_cl,'extra string goes here.....');
            IF NOT noFound THEN SET notFound = 0;
            END IF;
        END WHILE;
    CLOSE cur;
    END$$

DELIMITER ;

1 Ответ

3 голосов
/ 10 сентября 2011
...