我认为错误是来自case语句的,但我无法弄清楚是什么导致了这种问题。
这是我的查询:
self.reqMatchingSymbols(211, "IB")
答案 0 :(得分:0)
您的联接表名称具有三个参数,只允许两个参数:
INNER JOIN striker.saasta_prod.accessibility_std_disabilities asd
您是否从SQL Server复制了此文件,并允许在其中为数据库名称添加前缀?在Oracle中不允许这样做。
答案 1 :(得分:0)
因为,您需要用nullif()
或nvl()
替换isnull()
函数,并且需要它们的第二个参数。由于Oracle DB没有isnull()
功能,而另一个数据库(例如SQL Server)却没有。
它们的所有使用逻辑都是相似的。
答案 2 :(得分:0)
如Brian Leach所述,表的引用方式有点麻烦:在Oracle中,您可以使用my_schema.my_table
,但不支持使用三个点分隔的部分。
CASE
表达式中还有一个问题:
WHEN (isnull(doc_exp_date)) THEN 1
Oracle中没有ISNULL()
函数。
在SQL Server中,ISNULL()
用于检查第一个参数是否为NULL
,并且在这种情况下,将其替换为第二个参数。 Oracle等效为NVL()
。
但是由于您使用此表达式作为条件,所以我怀疑您实际上是在说:
WHEN doc_exp_date IS NULL THEN 1