Создайте процедуру в MariaDB v10.1.xx
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 грибной спрэвнÄ ›. PokouÅ¡Ãm se zahrnout tento dotaz SQL do uloženà © procedure.
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. К проблà © mu doch¡zà pÅ ™ и volánà процедуры.
CALL reindex (souhrn);
Kde 'souhrn' je n¡zev tabulky. Vol¡n¾ uloženà © procedure â € žreindexâ € œ se vracÃ:
\ # 1054 - Nezn¡mý sloupec 'souhrn' v 'seznamu polÃ'
NevÃm, proÄ se procedure vracà ⠀ žNeznámý sloupecâ € œ, když je procdura aplikována na konkrà © tnà ⠀ žjmà © no_tabulkyâ € œ. Mám nÄ ›кде чыбу? DÄ ›kuji mnohokrát.
1 ответ
Решение
Вам необходимо использовать динамический SQL для создания UPDATE
запрос внутри вашей процедуры, а затем PREPARE
а также EXECUTE
Это:
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