我有一个简单的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;
我尝试将列表命名为ascending
或descending
,并引用username或company_name等。我想在上述查询中传递order by
之后的动态值。当我通过对order by
之后的值进行硬编码来执行时,它正常工作,但是当我在stored procedure
中尝试相同的上述查询时,如此<
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');
,但我没有按预期得到结果。无论我传递给程序的参数是什么,它总是显示相同的结果。是否可以使用username,company_name等以asc
或desc
顺序查看列表。
答案 0 :(得分:0)
CREATE DEFINER=root@localhost PROCEDURE reportAllClients(selectName varchar(100))
应该是
CREATE DEFINER=root@localhost PROCEDURE reportAllClients(IN selectName varchar(100))