2015-01-11 133 views
0

我已经P/L SQL过程是很简单的样子怒吼 当用户没有输入正常seach_任何搜索词是获得“ALL”值,我需要从myTB表中的所有数据P/L SQL搜索查询

当用户输入的值是“ABC”我想从myTB

返回全部匹配“ABC”名称
seach_ VARCHAR2(100) :='ALL'; 

    IF attr_.EXISTS('SEACRH') THEN 
     seach_ := attr_('SEACRH'); 
    END IF; 


SELECT * FORM myTB 
WHERE (NAME LIKE '%seach_%') OR (seach_ = 'ALL') 

当用户输入一些值,我选择不回我应该为得到预期的结果做任何值?

注:我觉得NAME LIKE '%seach_%'不是为我工作

+0

删除撇号,然后重试。此时您的查询正在搜索*%seach _%*而不是*%user_input%* –

回答

1

您需要用通配符来连接你的搜索值:

SELECT * FROM myTB 
WHERE seach_ = 'ALL' 
OR NAME LIKE '%' || seach_ || '%' 

你也有过的FORM代替FROM,但你的程序不会已经编译,据推测这是在创建问题时引入的一个错字。