我想根据条件运行两个不同的查询。
这是在Logi Studio中完成的。 VariableFromLogi是字符串文字。我不只是想让它工作。我想对pl / sql有更好的了解。甲骨文说CASE语句返回s,但是我看到的所有示例都是返回值的示例。
CASE WHEN 'VariableFromLogi' = '' THEN
(SELECT "InvoiceID"
FROM "DataManagement_Sys"
WHERE "InvoiceID" = '1111')
ELSE
(SELECT "InvoiceID"
FROM "DataManagement_Sys"
WHERE "InvoiceID" = 'VariableFromLogi')
FETCH FIRST 5 ROWS ONLY
END CASE
我收到无效的SQL语句错误
答案 0 :(得分:1)
嗯,您可以做很多事情(甚至更多,您不能做)。
您发布的代码可以重写为(忽略大小写)
CGLayerGetContext
或者-甚至更好(只是select invoiceID
from datamanagement_sys
where invoiceid = case when variableflomlogi is null then '1111'
else variableflomlogi
end;
子句)
WHERE
这是一个简单的情况。根据实际问题的样子,查询将发生变化。
答案 1 :(得分:1)
只要两个查询返回相同的列,就可以为此编写查询。
在您的示例中:
SELECT invoiceid
FROM datamanagement_sys
WHERE invoiceid = COALESCE(:variablefromlogi, 1111);
更一般:
SELECT invoiceid
FROM datamanagement_sys
WHERE invoiceid = 1111 AND :variablefromlogi IS NULL
UNION ALL
SELECT invoiceid
FROM datamanagement_sys
WHERE invoiceid = :variablefromlogi;
如您所见,您可以将不同的查询(返回相同的列)与UNION ALL
粘合在一起,并且使用变量使查询中只有一个返回值。