有没有办法将列名作为参数传递给函数?
我想创建一个函数,我根据列过滤值,但是我将这个列名称传递给函数(理想情况下是字符串)?
我确实尝试了,但是我将列名称声明为varchar,显然这不起作用!
答案 0 :(得分:6)
简短回答:不。
唯一的方法是使用Dynamic SQL。创建一个将字段/表名作为参数的存储过程并构建一个新的SQL语句来执行它并不罕见。
但是,函数无法执行动态SQL。
此可能表明设计错误。如果你详细说明为什么需要这个,我们可能会提供完全不需要的替代设计。
或者,您可能更适合使用存储过程而不是函数。
使用一系列OR
条件 的想法也符合您的描述。但它通常会产生非常糟糕的计划。我会查找我的有用链接,以解释为什么以及如何处理它;它非常深入,但很高兴知道。
答案 1 :(得分:2)
你可以在一些动态的sql中做到这一点,你可以动态地构建一个查询,或者如果你有一个有限数量的字段,你可以做类似的事情
select * from table where
(param = 'field1' and field1 = value)
or (param = 'field2' and field2 = value)