2011-09-10 13 views
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 ; 
+1

SQLは、その位置の変数をサポートしていません。識別子のみです。これが可能な唯一の方法は["動的SQL"](http://stackoverflow.com/questions/1471570/dynamic-mysql-with-local-variables)ですが、それは*本当に乱雑になり始めます*。 –

答えて

関連する問題