一个关于Oracle sql写法的求助

我有一张表people_info:
p_name p_age


Bill 35
Joe 28

我想在Oracle中建一个存储过程
create or replace procedure xxxxxx(v_name in varchar2, ret_cursor out pkg.mycursor) is
begin

 open ret_cursor for select p_name, p_age from people_info where case when v_name = '' then true else p_name = v_name end;

end xxxxxx;

其中sql语句想表达的是如果v_name的值是空的话,那么全部都选出来,如果不为空则把p_name等于v_name的栏位选出来。

我用Access当数据库的时候在where后面加iif函数完成这个功能,但是Oracle好像不能把case when放在where中。请问各位大侠,我应该怎么写?