【发布时间】:2014-01-09 20:00:38
【问题描述】:
我是 Oracle 的新手,并且了解 MS SQL。我正在尝试根据来自Table2 的user_id 获取电话号码,这是业务逻辑:
案例 1:如果在
Table1中找到单个匹配项,则从Table2获取相应的免费电话号码案例 2:如果在
Table1中找不到匹配项,则从Table2获取默认免费电话号码案例3:如果在
Table1中找到多个匹配项,那么对于所有assigned_care_levels,从Table2中获取Care值,按asc或desc排序并选择最上面一行的电话号码。
我编写了以下查询,当我单独运行它时效果很好。但是,当我使用 if else 语句结合它时,我收到以下错误ERROR: ORA-00907: missing right parenthesis。这是我的代码:
if ((select count(distinct care_level) from Table1 where user_id = '100') > 0)
select phone from Table2 where care_level in (select distinct care_level from Table1 where user_id = '100')
and rownum = 1
order by care_level asc
else if((select count(distinct care_level) from Table1 where user_id = '100') = 0)
select phone from Table2 where care_level = 'default'
【问题讨论】:
-
你想在哪里执行这个?是 PL/SQL 存储过程吗?因为Oracle SQL 中没有
IF语句支持。 -
不,它不是存储过程。我试图使用 Visual Studio Orcale 查询编辑器来执行它。
-
正如我上面提到的,Oracle SQL 中没有
IF语句。而且我怀疑即使你用CASE替换它,你的构造也会运行。您宁愿将count(distinct care_level)保存到某个宿主变量并在您的客户端应用程序中实现逻辑。 -
感谢您的意见。
标签: oracle parentheses ora-00907