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 中是否真的存在存在或不存在的类比?

或者类似 innot 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 有啥不同的主要内容,如果未能解决你的问题,请参考以下文章

运行oracle数据库,对服务器硬件需求是啥样的

运行oracle数据库,对服务器硬件需求是啥样的

接口自动化测试流程是啥样的?

CSP nonce 实现是啥样的?

花式指针是啥样的?

GraphQL 文件上传请求应该是啥样的?