我基本上一直在使用SQL Server。然而,最近我搬到了Oracle,我正在尝试一个简单的if else语句,但它在Oracle SQL Developer中出错。下面是未执行的查询
IF (? = 'MEANING') THEN
SELECT rv_meaning_l1 vc_result
FROM TableA
WHERE rv_domain = 'CLAIM TYPE'
AND rv_low_value = '10';
ELSIF (? = 'ABBREVIATION') THEN
SELECT rv_abbreviation_l1 vc_result
FROM TableA
WHERE rv_domain = 'CLAIM TYPE'
AND rv_low_value = '10';
END IF;
的值?将通过ODBC连接来自Power BI分页报表的参数。然而,我得到错误,这个if块根本没有执行。我试图检查在SQL开发人员通过替换?使用 *'MEANING'**,但代码仍然没有执行。
IF ('MEANING' = 'MEANING') THEN
SELECT rv_meaning_l1 vc_result
FROM TableA
WHERE rv_domain = 'CLAIM TYPE'
AND rv_low_value = '10';
ELSIF ('MEANING' = 'ABBREVIATION') THEN
SELECT rv_abbreviation_l1 vc_result
FROM TableA
WHERE rv_domain = 'CLAIM TYPE'
AND rv_low_value = '10';
END IF;
先谢了。
1条答案
按热度按时间pu3pd22g1#
你只能在PL/SQL上下文中使用
IF
,所以你的代码需要在BEGIN
和END
之间,你需要选择一些你不想要的东西。这里不需要这种形式的逻辑或两个查询,您可以使用一个带有case表达式的查询来决定选择的列;假设这两列是相同的数据类型:
ELSE NULL
是可选的,因为如果没有匹配,这是默认值,但我已经把它放进去,使其更清晰,所以如果你想要,你可以返回一些其他值,如果变量不是预期值。如果你想在SQL Developer中测试它,那么使用它识别的形式的绑定变量:
您可以在SQL*Plus手册中阅读有关
VARIABLE
和EXECUTE
命令的更多信息; SQL Developer使用大多数相同的命令。