一个关于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中。请问各位大侠,我应该怎么写?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐