Создайте процедуру в 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 

Демо на dbfiddle

Другие вопросы по тегам