0
SET Project_List_val=CONCAT(Project_Number_val,'_List');
Insert Into test (Manthan_Panel_Id) select Manthan_Panel_Id from Project_List_val where Project_Number_val='9';

挿入ステートメントには、上記の手順で連結されたテーブル名で構成される「Project_List_val」という名前の変数があります。このステートメントは、変数の内容をテーブル名として取得するのではなく、'Project_List_val' をテーブル名として取得し、テーブルが見つからないというエラーを発生させます。

助言がありますか?

4

1 に答える 1

3

デフォルトでは、テーブル名と列名をパラメータ化できないため、そのために動的 SQLを作成する必要があります。

SET @Project_List_val = CONCAT(Project_Number_val, '_List');
SET @projNum = 9;
SET @sql = CONCAT(' INSERT INTO test (Manthan_Panel_Id)
                    SELECT Manthan_Panel_Id 
                    FROM ', @Project_List_val, ' 
                    WHERE Project_Number_val = ?');

PREPARE stmt FROM @sql;
EXECUTE stmt USING @projNum;
DEALLOCATE PREPARE stmt;
于 2013-02-12T09:02:42.487 に答える