1
는 여기에 지정된 데이터베이스 '포스트'저장 프로 시저에서 변수를 열 이름으로 사용 하시겠습니까?
의 모든 text
유형의 필드를 선택 MySQL의 절차를 쓴 나는 CONCAT 기능을 통해 갱신추가 문자열을 추가 모든 텍스트 유형 필드 행합니다.
내가 전화 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하지만 변수를 간주한다.
이 문제를 해결할 수 있습니까?
코드 :
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 ;
SQL은 해당 위치의 변수를 지원하지 않으며 식별자 만 지원합니다. 이것이 가능한 유일한 방법은 [ "동적 SQL"] (http://stackoverflow.com/questions/1471570/dynamic-mysql-with-local-variables)입니다. 그러나 이것은 정말로 엉망이됩니다. –