桔梨啰柚 2015-11-05 05:29 采纳率: 100%
浏览 1361

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

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 Python时间序列如何拟合疏系数模型
    • ¥15 求学软件的前人们指明方向🥺
    • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
    • ¥20 双层网络上信息-疾病传播
    • ¥50 paddlepaddle pinn
    • ¥20 idea运行测试代码报错问题
    • ¥15 网络监控:网络故障告警通知
    • ¥15 django项目运行报编码错误
    • ¥15 STM32驱动继电器
    • ¥15 Windows server update services