我有一个简单的 mysql 查询
select u.user_id, username, company_details_id, company_name, ut.user_type_id, role_type, street1, city_town, phone, email, website, create_date, update_date, isActive from users u
join company_details cd on u.user_id = cd. user_id
join user_type ut on u.user_type_id=ut.user_type_id order by company_name asc;
我正在尝试引用用户名或公司名称等将列表按升序
或降序
排序。我想在order by<之后传递动态值
在上面的查询中。当我通过硬编码 order by
之后的值来执行时,它工作正常,但是当我在 存储过程
中尝试上面相同的查询时,如下所示
DELIMITER $$
CREATE DEFINER=root@localhost PROCEDURE reportAllClients(selectName varchar(100))
BEGIN
select u.user_id, username, company_details_id, company_name, ut.user_type_id, role_type, street1, city_town, phone, email, website, create_date, update_date, isActive from users u
join company_details cd on u.user_id = cd. user_id
join user_type ut on u.user_type_id=ut.user_type_id order by selectName;
END$$
DELIMITER ;
我将存储过程称为 call reportAllClients('company_name desc');
但我没有得到预期的结果。无论我传递给过程的参数是什么,它总是显示相同的结果。有没有办法以 asc
或 desc
顺序查看包含用户名、公司名称等的列表。
最佳答案
CREATE DEFINER=root@localhost PROCEDURE reportAllClients(selectName varchar(100))
应该是
CREATE DEFINER=root@localhost PROCEDURE reportAllClients(IN selectName varchar(100))
关于mysql 存储过程调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24249622/