mysql存储过程调用

时间:2014-06-16 18:07:36

标签: mysql stored-procedures

我有一个简单的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;

我尝试将列表命名为ascendingdescending,并引用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等以ascdesc顺序查看列表。

1 个答案:

答案 0 :(得分:0)

CREATE DEFINER=root@localhost PROCEDURE reportAllClients(selectName varchar(100))

应该是

CREATE DEFINER=root@localhost PROCEDURE reportAllClients(IN selectName varchar(100))