首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Mule4中实现ORACLE不存在的插入

如何在Mule4中实现ORACLE不存在的插入
EN

Stack Overflow用户
提问于 2020-04-25 12:37:43
回答 2查看 243关注 0票数 0

我试图在Mule4中实现一个用例,如果还没有给用户分配一个旅游,就需要为它分配一个向导。

我希望能够使用Mule db:insert组件实现它,并在不存在SQL脚本的地方使用INSERT,如下所示。

代码语言:javascript
复制
INSERT INTO TL_MAPPING_TOUR(TOURNO,TLID,SYSTEM) select :tourno,:tlid,:system from DUAL 
where not exists(select * from TL_MAPPING_TOUR where (TOURNO=:tourno and TLID=:tlid and SYSTEM=:system))

然而,这将导致Mule异常。

代码语言:javascript
复制
Message               : ORA-01722: invalid number
Error type            : DB:BAD_SQL_SYNTAX

TL_MAPPING_TOUR表有一个id列(主键),但这是由序列自动生成的。

同样的脚本修改为在中直接运行,如下面所示,运行良好。

代码语言:javascript
复制
INSERT into TL_MAPPING_TOUR(TOURNO,TLID,SYSTEM) 
select 'CLLO001474','123456789','AS400' 
from DUAL 
where not exists(select * from TL_MAPPING_TOUR where (TOURNO='CLLO001474' and TLID='123456789' and SYSTEM='AS400'));

显然,Mule db:insert组件不喜欢语法,但我不太清楚这里有什么问题。我也找不到Mule4数据库组件不存在的任何插入示例实现。

stackoverflow页面https://stackoverflow.com/questions/54910330/insert-record-into-sql-server-when-it-does-not-already-exist-using-mule指向未找到的页面。

您是否知道这里有什么问题,以及如何在不使用另一个Mule4 db:select组件的情况下在db:insert之前实现这一点?

EN

回答 2

Stack Overflow用户

发布于 2020-04-25 12:47:04

我不知道"mule4",但是这个:

消息: ORA-01722:无效号码

并不意味着语法是错误的(正如您已经测试过的那样--在另一个工具中,相同的语句工作正常)。

原因:您执行了一条试图将字符串转换为数字的SQL语句,但没有成功。 决议: 解决此Oracle错误的选项是: 选项1:只有数字字段或包含数字值的字符字段可以用于算术操作。确保所有表达式都计算为数字。 选项2:如果要从日期中添加或减去日期,请确保从日期中添加/减去了一个数值。

换句话说,似乎其中一个列被声明为数字,而您传递的是一个字符串。Oracle在seems中测试语句时执行隐式转换,但似乎mule4没有执行,因此出现了错误。

最明显的原因(根据您发布的内容)是将'123456789'放入TLID中,因为其他值显然是字符串。因此,传递123456789 (一个数字,它周围没有单引号),看看会发生什么。应该行得通。

票数 0
EN

Stack Overflow用户

发布于 2020-04-25 17:14:43

太宽容了。它将将字符串转换为数字,如果可以,则自动将字符串转换为数字。而且它可以做很多。Mulesoft DB连接器的尝试是相同的,但它并不像本地工具那样成功。通常情况下,它无法转换,特别是在日期,但这不是你的情况。总之,不要太相信Mulesoft的太多数据意义。如果成功的话-太棒了!否则,尝试从其中消除任何智能,并执行查询中的所有转换,更好的是从字符串中进行转换。通常,数字可以正常工作,但如果不工作-使用函数来正确标记这是数字。

关于这一点的更多信息,请看https://simpleflatservice.com/mule4/AvoidCoversionsOrMakeThemNative.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61425757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档