1
は、ここで私は、指定されたデータベース「WP」ストアドプロシージャの列名として変数を使用していますか?
のすべてtext
タイプフィールドを選択し、MySQLの手順を書いて、私は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を文字列ではなく変数として。
これを修正できますか?
コード:
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)ですが、それは*本当に乱雑になり始めます*。 –