在 MariaDB v10.1.xx 中创建过程
Create a procedure in MariaDB v10.1.xx
我有一个关于重新索引 ID 列的问题SQL。
SET @ newid = 0;
UPDATE tablename SET id = (@ newid: = @ newid + 1) ORDER BY id;
此查询 SQL 工作正常。
我正在尝试将此查询 SQL 包含在存储过程中。
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Č ;
程序已创建并保存。调用过程时出现问题。
CALL reindex (souhrn);
其中 'souhrn' 是表的名称。
调用“reindex”存储过程返回:
\ # 1054 - Neznámý sloupec 'souhrn' v 'seznamu polí'
我不知道为什么当程序应用于特定的“jmeno_tabulky”时程序返回“未知列”。我哪里错了吗?非常感谢。
您需要使用动态 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
我有一个关于重新索引 ID 列的问题SQL。
SET @ newid = 0;
UPDATE tablename SET id = (@ newid: = @ newid + 1) ORDER BY id;
此查询 SQL 工作正常。 我正在尝试将此查询 SQL 包含在存储过程中。
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Č ;
程序已创建并保存。调用过程时出现问题。
CALL reindex (souhrn);
其中 'souhrn' 是表的名称。 调用“reindex”存储过程返回:
\ # 1054 - Neznámý sloupec 'souhrn' v 'seznamu polí'
我不知道为什么当程序应用于特定的“jmeno_tabulky”时程序返回“未知列”。我哪里错了吗?非常感谢。
您需要使用动态 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