桔梨啰柚 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 Qt下使用tcp获取数据的详细操作
    • ¥15 idea右下角设置编码是灰色的
    • ¥15 全志H618ROM新增分区
    • ¥20 jupyter保存图像功能的实现
    • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
    • ¥15 NAO机器人的录音程序保存问题
    • ¥15 C#读写EXCEL文件,不同编译
    • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
    • ¥15 扩散模型sd.webui使用时报错“Nonetype”
    • ¥15 stm32流水灯+呼吸灯+外部中断按键