引數化查詢,集合做引數。(Oracle)

2022-02-01 11:50:51 字數 546 閱讀 1122

在進行資料庫查詢時,為了防止sql注入,我們通常會採用引數化的查詢。在引數化查詢過程中,當遇到

in、exist等子句時無法正常工作。

針對這個問題,下面有一種變向的解決方案(oracle)。

select id from lv.test

join table(

xmlsequence(extract(xmltype('31059

44763

'),'/ids/*'))) xu

on id = to_number(extract(value(xu),'i/text()'));

將集合轉換成xml字串,變向的將集合引數轉換成了字串引數。

對於sqlserver,同樣可以用openxml達到類似的目的。

效能方面:

當集合數量少的時候,直接採用in的方式效能更好,與上面方式相比約為 1:2

當集合數量達到80左右的時候,基本持平

更大的話上面方式的效能更好。(in本身更適用少數量集合)

當然上面只考慮執行速度(沒考慮資源占用),且在在本機上做簡單測試。

引數化查詢

一 using system using system.collections.generic using system.linq using system.text using model using system.data.sqlclient using system.data namespac...

SqlParameter引數化查詢

2013 06 24 14 30 2999人閱讀收藏 舉報 net架構 18 上篇部落格寫了關於重構 用到的 sqlhelper 類,這個類包括四種函式,根據是否含參和是否有返回值各分兩種。在這裡寫寫傳參過程用到的 sqlparameter。如果我們使用如下拼接 sql字串的方式進行資料庫操作存在指...

MSSQL的IN引數化查詢

e02 例如 原sql語句 delete from serviceboard where charindex cast id as nvarchar ids 0 注 id 在資料庫中為整型,要匹配字串必須轉換成nvarchar 現在修改為 delete from serviceboard where...