我們有一個程序,允許用戶將未經修改的原始輸入數據映射到標準化的最終表。無動態SQL的自定義SQL列公式
一般來說這是一個簡單的一對一匹配,而不需要特殊的邏輯。
例如; raw_table.raw_col_1將映射到final_table.col_1,raw_table.raw_col_2將映射到final_table.col_2等
然而,一個客戶希望有final_table.col_3能力如下映射:
case
when (raw_col_1 = 'S12' and raw_col_2 = 'D18') or raw_col_3 is not null then raw_col_3
else 'GF17'
end
其他類似的請求也在那裏。
加載final_table時,我可以使用動態SQL輕鬆實現此目的。但是,這給我們開放SQL注入攻擊。
有沒有一種方法,我們可以允許這種類型的自定義字段映射的不訴諸動態SQL?
變量加入,使像查詢:'情況下(@var =真實raw_col_1 ...)...其他raw_col_3 end' –
我認爲簡單的答案是:沒有。它甚至不是恆定的(*其他類似的請求也存在。*)以滿足用戶驅動的可變性,它必須是動態的。 –