以下查询适用于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%');
答案 0 :(得分:2)
(基于来自疯狂猜测评论的反馈):BizTalk显然将尾随;
解释为语句分隔符,因此即使它只是一个,它也会违反多语句限制。删除分号可以防止这种情况发生。
请参阅this answer,了解SQL * Plus和SQL Developer等中常用的原因,即使对于单个语句也是如此。通过其他客户端和适配器,情况会有所不同。
答案 1 :(得分:1)
您可以将查询放在存储过程或视图中。 您没有说明您是如何执行查询的。您使用的是WCF自定义适配器吗?