【问题标题】:NetSuite ODBC LimitationsNetSuite ODBC 限制
【发布时间】:2020-06-05 19:54:29
【问题描述】:

我想知道是否有人知道通过 OpenQuery 使用 NetSuite 的 ODBC SuiteAnalytics Connect 服务的限制列表?我遇到了很多问题,一些更复杂的查询无缘无故地失败了,我终于开始将其缩小到某种奇怪的限制,这是我对 Oracle ODBC 没有预料到的。以下是我目前发现的一些示例:

  • 无法使用基本 CTE

基本的 Oracle 查询:

在 SQL Server 中作为 CTE 的基本查询:

通过 OpenQuery 在 Oracle NetSuite 中作为 CTE 的基本查询(请注意无用的响应,基本上是(“不工作”):

  • 无法使用 TRUNC(date) 函数

选择 SYSDATE:

选择和截断 SYSDATE(注意错误,即使 according to Oracle, the format parameter is OPTIONAL:

使用两个明显必需的参数(使用 Oracle 页面中的有效“格式”掩码)选择和截断 SYSDATE。注意“TRUNC returned error”这个无用的错误:

  • 无法使用 LISTAGG() 函数

项目全名的基本查询:

尝试使用 Oracle's correct format for LISTAGG 时的相同查询,再次注意无用的“SQL 语句中的语法错误”:

  • 由于某种原因,当插入到更大的查询中时,可以自行正常工作的子查询似乎会失败(即将推出的示例™)

我试图了解这些限制并了解它们是什么,但这就像戳黑盒子!

【问题讨论】:

  • 为什么?你得到什么错误?一个乏味的“不能使用”并没有给我们太多的继续。
  • @alexherm 这正是我的挫败感。 90% 的情况下,当我得到回复时,基本上就是我得到的,一个没有任何意义的通用无用错误。当我周一重新开始工作时,我会用一些例子来更新我的问题。
  • @alexherm 我已经用一些基本示例更新了这个问题,如果这有帮助的话。在我从一个可以直接访问 Oracle 数据库的环境中走出来后,我感到非常沮丧,发现我在尝试使用 OpenQuery 访问我们的 NetSuite 数据库时无法完成一些相同的基本操作,该数据库大概是基于 Oracle 的技术。
  • 除非情况发生变化,否则在使用 Oracle 时需要提供 FROM。通常通过添加FROM DUAL来完成。
  • @Brian 事情肯定发生了变化,因为成功的语句显然处理得没有错误。只是在添加了修饰符之后才失败。事实上,当我尝试使用 DUAL 时,它告诉我 DUAL 不是有效对象。

标签: sql oracle function odbc netsuite


【解决方案1】:

作为对我之后的任何人的后续行动......

我直接联系了 NetSuite,因为我在其他任何地方都找不到答案,他们告诉我他们只支持 SQL-92 中存在的方法和对象。

这是他们的回应:

根据我们的项目经理的说法,用户没有直接连接到 Oracle 数据库。 SuiteAnalytics Connect 使用自己的(虚拟)架构,可以>以符合 SQL-92 的方式查询。

某些特定于 Oracle 的功能也可以正常工作,但不能保证正常工作。 >不鼓励用户使用依赖于 Oracle DB 版本的查询。

因此,虽然这很令人沮丧,但看起来任何想要对 NetSuite 的 SQL 实现做任何花哨的事情的人都无法使用 SQL-92 或更低版本中尚不存在的任何东西。因此,CTE 和 ListAgg() 已淘汰。

【讨论】:

    猜你喜欢
    • 2020-03-11
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多