1

textここでは、指定されたデータベース'wp'のすべてのタイプフィールドを選択する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 ;
4

1 に答える 1

3

プリペアドステートメントを使用する必要があります。MySQLストアドプロシージャで動的SQLを使用する方法も参照してください。

于 2011-09-10T05:34:06.017 に答える