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は、末尾;をステートメント区切り文字として解釈しているようです。したがって、実際には1つだけですが、複数ステートメントの制限に違反しています。セミコロンを削除すると、これを防ぐことができます。

単一のステートメントであっても、SQL *PlusやSQLDeveloperなどで頻繁に使用される理由については、この回答を参照してください。他のクライアントやアダプターによって状況は異なります。

于 2012-06-18T07:45:25.607 に答える
1

クエリをストアドプロシージャまたはビュー内に配置できます。クエリをどのように実行しているのかはわかりませんでした。WCFカスタムアダプターを使用していますか?

于 2012-06-15T21:10:45.243 に答える