pl sql 列名作为参数

pl sql column name as parameter

这是存储过程:

DELIMITER $$
CREATE PROCEDURE select_vehicles(IN name_of_column VARCHAR(255))
BEGIN
    SELECT * FROM vehicle order by name_of_column;
END
$$ DELIMITER ;

代码没有错误,但“order by”不起作用。

如何将列名作为参数传递并使用它们

您需要动态 SQL 才能将列名作为参数传递。所以像:

DELIMITER $$

CREATE PROCEDURE select_vehicles(IN name_of_column VARCHAR(255))
BEGIN
    SET @sql = CONCAT('SELECT * FROM vehicle order by `', name_of_column, '`');
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END
$$