Oracle EBS 的接口方式是啥样的?与 DBLINK 有啥不同
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle EBS 的接口方式是啥样的?与 DBLINK 有啥不同相关的知识,希望对你有一定的参考价值。
1、标准接口表2、标准API前者例如AP的发票接口表,供应商、客户接口表,具体实现方式是,将数据按照接口表规格准备到接口表中,然后运行标准的import程序将接口表数据导入到Oracle EBS中(即各接口表对应的正式table中)。而例如银行、分行、银行帐户相关API,一般通过客户化程序,调用此类API实现将数据导入系统,此时一般也会新建一些客户化staging table,先将外部数据准备到staging table后,再使用客户化程序,调用API将资料导入Oracle EBS中。
通常,“Oracle EBS的接口方式”指的是数据进入Oracle EBS的方式,主要有两类技术:
1、标准接口表
2、标准API
前者例如AP的发票接口表,供应商、客户接口表,具体实现方式是,将数据按照接口表规格准备到接口表中,然后运行标准的import程序将接口表数据导入到Oracle EBS中(即各接口表对应的正式table中)。
而例如银行、分行、银行帐户相关API,一般通过客户化程序,调用此类API实现将数据导入系统,此时一般也会新建一些客户化staging table,先将外部数据准备到staging table后,再使用客户化程序,调用API将资料导入Oracle EBS中。
而DBLINK则是数据库之间的资料交换方式,假如Oracle EBS的数据库需要与其他数据库(例如其他系统的数据库)进行资料交互,那么DBLINK是其中一个选项而已。
以上,两者直接比较没有太大意义,完全可能是应用于不同业务场景下的技术。 参考技术A 1、标准
2、标准API前者例如AP的发票
,供应商、客户
,具体实现方式是,将数据按照接口表规格准备到接口表中,然后运行标准的import程序将接口表数据导入到Oracle EBS中(即各接口表对应的正式table中)。
而例如银行、分行、银行帐户相关API,一般通过客户化程序,调用此类API实现将数据导入系统,此时一般也会新建一些客户化staging table,先将外部数据准备到staging table后,再使用客户化程序,调用API将资料导入Oracle EBS中。
通常,“Oracle EBS的接口方式”指的是数据进入Oracle EBS的方式,主要有两类技术:
1、标准接口表
2、标准API
前者例如AP的发票接口表,供应商、客户接口表,具体实现方式是,将数据按照接口表规格准备到接口表中,然后运行标准的import程序将接口表数据导入到Oracle EBS中(即各接口表对应的正式table中)。
而例如银行、分行、银行帐户相关API,一般通过客户化程序,调用此类API实现将数据导入系统,此时一般也会新建一些客户化staging table,先将外部数据准备到staging table后,再使用客户化程序,调用API将资料导入Oracle EBS中。
而DBLINK则是数据库之间的资料交换方式,假如Oracle EBS的数据库需要与其他数据库(例如其他系统的数据库)进行资料交互,那么DBLINK是其中一个选项而已。
以上,两者直接比较没有太大意义,完全可能是应用于不同业务场景下的技术。 参考技术B 1,Oracle ebs是Oracle的ERP,是一套用于企业管理的软件;
2,Dblink是数据库之间数据交互的一种方式;
3,Oracle ebs的接口通常是指通过客户化的开发方式,将客户化的业务与Ebs中的标准业务对接;
4,所以这是两个方面的东西,没有可比性;
5,如果你指的单纯是数据库方面连接方式,那么没有不同点。 参考技术C 1、标准接口表2、标准API前者例如AP的发票接口表,供应商、客户接口表,具体实现方式是,将数据按照接口表规格准备到接口表中,然后运行标准的import程序将接口表数据导入到Oracle EBS中(即各接口表对应的正式table中)。
而例如银行、分行、银行帐户相关API,一般通过客户化程序,调用此类API实现将数据导入系统,此时一般也会新建一些客户化staging table,先将外部数据准备到staging table后,再使用客户化程序,调用API将资料导入Oracle EBS中。
在 Mongodb 中,不存在或存在的查询是啥样的?
【中文标题】在 Mongodb 中,不存在或存在的查询是啥样的?【英文标题】:How does a not exists or exists query look like in Mongodb?在 Mongodb 中,不存在或存在的查询是什么样的? 【发布时间】:2014-03-20 16:27:12 【问题描述】:我是 MongoDb 的新手,正在尝试查看是否可以在 Mongodb 中执行 exists() 查询。
我正在使用的集合有用户(包括公司和 billingGroup 等详细信息)和预期公司。
通常在 Oracle 中,users 和 expectedCompanies 会在两个表中,我会这样查询:
SELECT *
FROM tableUsers
WHERE exists (
SELECT 1
FROM tableExpectedCompanies
WHERE
tableExpectedCompanies.companyname != tableUsers.companyName and
tableExpectedCompanies.billingGroup = tableUsers.companyName.billingGroup
)
在 MongoDb 中,它现在都在一个集合中,大致如下:
"_id" : "billingGroupX",
"expectedCompanies" : ["CompanyA", "company B", "supercompany X"],
"users" : ["name":..., "company": ..., , ]
我希望我能做这样的事情:
db.MasterData.find(
'users.company':
$nin: db.MasterData.find(
,
'expectedCompanies:1')
)
当然失败得很惨,第一个错误是:
error: "$err" : "$nin needs an array", "code" : 13277
MongoDb 中是否真的存在存在或不存在的类比?
或者类似 in 或 not in 的情况?
edit :在对我的问题进行初步负面反馈之后。请注意,我正在努力寻找存在/不存在/存在/不存在的条件您可以在其中使用子查询,因为它通常在 SQL 中完成。
【问题讨论】:
你看文档了吗? docs.mongodb.org/manual/reference/operator/query/exists @Lix 文档将我指向 $in 运算符 (docs.mongodb.org/manual/reference/operator/query/in) 但这些示例并不针对子文档 @Lix 对我来说看起来不像重复,另一个 SO 链接是查找字段是否存在的示例,但我正在尝试查找字段值是否存在 文档说这些运算符是相关的,但与任何字段一样,您可以使用点语法访问子文档。 This section 谈到完全匹配,但更改运算符将产生相同的行为。 说"field values exists"
与相等运算符几乎相同 - 您正在匹配一个值。
【参考方案1】:
好的,这是您需要理解的声明。
MongoDB 不做连接
即使在这个子查询表单中,您也不能在您的语句中包含来自另一个集合的另一个查询。也就是说,请注意以下几点:
error: "$err" : "$nin 需要一个数组", "code" : 13277
所以您没有按要求提供 array,但您尝试输入语句。然后可以考虑代码:
var results = db.MasterData.find(, "expectedCompanies:1").toArray();
单独查看它,您会发现它将从 all 结果中返回“expectedCompanies”字段。我在末尾添加了 .toArray()
函数,以表明您可能一直在尝试做的事情不会奏效,因为您将获得 cursor 而不是大批。但这在这里行不通,因为 array 即使从这个语句中指的是 整个 集合,而不仅仅是来自 一个 文档。
所以您可能“尝试”做的是将“users.company”值与“expectedCompanies”值匹配(或具体不匹配)。所以在 MongoDB 中你可以这样做:
db.MasterData.aggregate([
// Unwind the "users" array
"$unwind": "$users" ,
// Unwind the "expectedCompanies" array
"$unwind": "$expectedCompanies" ,
// Project a match condition
"$project":
"users": 1,
"matching": "$eq": [
"$users.company",
"$expectedCompanies"
]
,
// Filter the results
"$match": "matching": false ,
// Group the duplicate entries from the unwind
"$group":
"_id":
"_id": "$_id",
"users":
"name": "$users.name",
"company": "$users.company"
,
// Project a nicer document
"$project":
"_id": "$_id._id",
"users": "$_id.users"
])
这使用aggregate 来$unwind 数组中的元素并将它们相互比较。每个阵列都需要在不同的阶段“解开”。实际比较在第一个$project 阶段完成,使用$eq 逻辑运算符比较两个值。他们相等的地方是true
,不相等的地方是false
。
然后,我们使用 $match 阶段将结果“过滤”为我们想要的 false
值。这就像一个普通的.find()
查询。然后结果通过$group 发送,以汇集来自“用户”文档的密钥。这是因为当数组“解开”时,每个条目都为另一个“expectedCompanies”数组中的每个元素“复制”了。想想$unwind 形式就像“去规范化”数据一样。分组删除此处的重复项。
最后,由于所有内容都“分组”在一个键下,然后再次使用 $project 将结果重新塑造成更符合您想要的结果。
所以用法与 “子查询” 形式有点不同,但这就是您如何执行语句来比较两个数组中的值你的文件。
【讨论】:
【参考方案2】:以下是 Exist() 或 IN() SQL 函数转换的不同方法。 这是一个简单的 javascript 并且很有用,但为了提高性能,您需要适当的索引。
var mycursor = db.tableUsers.find( )
mycursor.forEach( function (x)
var o = db.tableExpectedCompanies.count( billingGroup : x.billingGroup, companyname : $ne: x.companyName )
if ( o > 0)
//print('The _id exists! ' + x._id); //debugging only
printjson(x) ;
)
【讨论】:
最初的问题涉及一个 MongoDB 表,其中所有内容都在一个集合中,而不是两个单独的表。这不会改善所选答案。以上是关于Oracle EBS 的接口方式是啥样的?与 DBLINK 有啥不同的主要内容,如果未能解决你的问题,请参考以下文章