sql - NetSuite ODBC 限制
问题描述
我试图找出是否有人知道通过 OpenQuery 使用 NetSuite 的 ODBC SuiteAnalytics Connect 服务的任何限制列表?我遇到了很多问题,一些更复杂的查询无缘无故地失败了,我终于开始将其缩小到某种奇怪的限制,这是我对 Oracle ODBC 没有预料到的。以下是我目前发现的几个例子:
- 无法使用基本 CTE
基本的 Oracle 查询:
SQL Server 中作为 CTE 的基本查询:
通过 OpenQuery 在 Oracle NetSuite 中作为 CTE 的基本查询(注意无用的响应基本上是(“不工作”):
- 不能使用 TRUNC(date) 函数
选择 SYSDATE:
选择和截断 SYSDATE(注意错误,即使根据 Oracle,格式参数是可选的:
使用两个明显必需的参数(使用 Oracle 页面中的有效“格式”掩码)选择和截断 SYSDATE。请注意“TRUNC 返回错误”的无用错误:
- 不能使用 LISTAGG() 函数
项目全名的基本查询:
尝试对 LISTAGG 使用 Oracle 的正确格式时的相同查询,再次注意无用的“SQL 语句中的语法错误”:
- 出于某种原因,当插入到更大的查询中时,本身工作正常的子查询似乎会失败(即将推出的示例™)
我试图了解这些限制并了解它们是什么,但这就像戳黑匣子!
解决方案
作为对任何追随我的人的后续行动......
我直接联系了 NetSuite,因为我在别处找不到答案,他们告诉我他们只支持 SQL-92 中存在的方法和对象。
这是他们的回应:
根据我们的项目经理的说法,用户没有直接连接到 Oracle 数据库。SuiteAnalytics Connect 使用其自己的(虚拟)架构,可以以符合 SQL-92 的方式查询该架构。
一些特定于 Oracle 的函数也可以工作,但不能保证正常工作。>不鼓励用户使用依赖于 Oracle DB 版本的查询。
因此,虽然这非常令人沮丧,但看起来任何想要对 NetSuite 的 SQL 实现做任何花哨的事情的人都无法使用 SQL-92 或更低版本中尚不存在的任何东西。因此,CTEs 和 ListAgg() 已被淘汰。
推荐阅读
- rust - 我可以根据平台设置 Cargo 项目的默认功能吗?
- mysql - 不显示日期,而是将它们移动到不同的列
- android - 此文件夹配置('v26')是不必要的;'minSdkVersion' 为 26。将此文件夹中的所有资源合并到 'mipmap-anydpi'
- c# - 我如何 String.Join 一个盒装数组?
- macos - 如何在 macOS Big Sur 中将 cl_khr_3d_image_writes 扩展用于 OpenCL
- python - 运行 pip install -r pip-freeze.txt 时出错
- python - TypeError:'int' 对象不可迭代(第 19 行(密码中的 i))
- eclipse - 如何摆脱最新的 Eclipse (2021-03) 的 MANIFEST.MF (No such file or directory) 错误?
- javascript - 重试,然后忽略错误并获取源值 rxjs
- python - 删除python后数据库sqlite3未更新