0

下面的查询在 Oracle 中有效,但在 BizTalk 中无效。一个快速的谷歌告诉我

“多个语句不适用于 Oracle(其他数据库也可能阻止这种情况)。Oracle 阻止了所谓的 SQL 注入,这是黑客用来让数据库在数据库中运行代码的机制。”

这和子查询一样吗?是否可以在没有子查询的情况下编写此查询?

update order_header oh set uploaded = 'Y'
where oh.user_def_chk_3 = 'N' 
and oh.status in('Complete','Shipped') 
and oh.client_id in (select c.client_id from client c 
    where upper(c.notes) like 'BERGEN%');
4

2 回答 2

2

(基于来自猜测评论的反馈):BizTalk 显然将尾随解释;为语句分隔符,因此它违反了多语句限制,即使它实际上只有一个。删除分号将防止这种情况发生。

请参阅此答案以了解为什么它经常在 SQL*Plus 和 SQL Developer 等中使用,即使对于单个语句也是如此。其他客户端和适配器的情况有所不同。

于 2012-06-18T07:45:25.607 回答
1

您可以将查询放在存储过程或视图中。你没有说你是如何执行查询的。您使用的是 WCF 自定义适配器吗?

于 2012-06-15T21:10:45.243 回答