Mámdotaz SQL proreindexovánísloupce ID。

SET @ newid = 0;
UPDATE tablename SET id = (@ newid: = @ newid + 1) ORDER BY id;


Tento dotaz SQL fungujesprávně。
通过SQL进行uložené处理。

ODDĚLOVAČ //
VYTVOŘTE POSTUP reindex
(
      V par VARCHAR (50)
)
ZAČÍT

SET @ newid = 0;
UPDATE dbName.par SET id = (@ newid: = @ newid + 1) ORDER BY id;

KONEC //
ODDĚLOVAČ ;


张贴vytvořenauložen。 Kproblémudocházípřivolání过程。

CALL reindex (souhrn);


Kde'souhrn'jenázevtabulky。
Voláníuložené过程“重新编制索引”:


  \#1054-Neznámýsloupec'souhrn'v'seznamupolí'


内维恩(Nevím),过程程序名为“Neznámýsloupec”,过程程序为“jméno_tabulky”。 Mámněkdechybu? Děkujimnohokrát。

最佳答案

您需要使用动态SQL在过程内部创建UPDATE查询,然后在PREPAREEXECUTE中创建它:

CREATE PROCEDURE reindex
(
    IN par VARCHAR(50)
)
BEGIN
    SET @newid=0;
    SET @sql = CONCAT('UPDATE dbName.', par, ' SET id=(@newid:=@newid+1) ORDER BY id');
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END


Demo on dbfiddle

10-08 03:59