Reputation: 1006
Mám dotaz SQL pro reindexování sloupce ID.
SET @ newid = 0;
UPDATE tablename SET id = (@ newid: = @ newid + 1) ORDER BY id;
Tento dotaz SQL funguje správně. Pokouším se zahrnout tento dotaz SQL do uložené procedury.
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Č ;
Postup je vytvořen a uložen. K problému dochází při volání procedury.
CALL reindex (souhrn);
Kde 'souhrn' je název tabulky. Volání uložené procedury „reindex“ se vrací:
\ # 1054 - Neznámý sloupec 'souhrn' v 'seznamu polí'
Nevím, proč se procedura vrací „Neznámý sloupec“, když je procedura aplikována na konkrétní „jméno_tabulky“. Mám někde chybu? Děkuji mnohokrát.
Upvotes: 0
Views: 72
Reputation: 147206
You need to use dynamic SQL to create the UPDATE
query inside your procedure and then PREPARE
and EXECUTE
it:
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
Upvotes: 1