我刚遇到了一个奇怪的事情......我们网站上有一些代码,它将一个巨大的 SQL语句传递给 SQL Server 作为查询,并通过一些搜索和替换来根据一些用户值在代码中进行修改,然后将其传递给 SQL Server。
我本来认为将其作为存储过程的参数化查询会更加清晰,以用户值作为参数,但当我仔细看时,我明白了他们这么做的原因......他们所选择的表是可变的,取决于这些用户值。
例如,在某种情况下,如果值为(“FOO”,“BAR”),则查询最终可能类似于“SELECT * FROM FOO_BAR”
有没有一种简单明了的方法来解决这个问题?我试过的所有方法都不太优雅。
编辑:当然,我可以在存储过程中动态生成sql语句并执行它(呕吐),但那时我想知道我是否获得了任何好处。
编辑2:以某种智能的方式重构表名,比如将它们全部放在一个表格中,并使用新列来表示不同的名称,将是解决所有这些问题的好方法,正如一些人直接指出或暗示的那样。可惜在这种情况下不是一个选项。