我们有一个程序,允许用户将未经修改的原始输入数据映射到标准化的最终表。无动态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' –
我认为简单的答案是:没有。它甚至不是恒定的(*其他类似的请求也存在。*)以满足用户驱动的可变性,它必须是动态的。 –