У меня есть часть динамического SQL, внутри которой извлекается функция, зависящая от других результатов запроса, но также использует эти результаты для оценки этой функции. Я знаю, что eval() не существует в SQL, так что я использую?SQL Server - оценивать функцию в динамическом запросе
очень упрощенная версия
select reading, functiontype, @result = eval(f.functionformula)
from readingstables r
join functiontable f on (r.functiontype = f.functiontype)
Так в основном (обратите внимание, это только пример формулы) Я хочу использовать functionformula, который связан с набором показаний через formulatype
если f.functiontype == 'A', то f.functionformula = чтение * чтение если f.functiontype == 'B', то f.functionformula = чтение * Костанта/anothervalue // и т.д. и т.п.
Настоящая версия объятие кусок динамического SQL в хранимой процедуре, которая управляет курсором. Я бы предпочел сделать это в одном запросе, но подозреваю, что мне, возможно, придется идти на компромисс и иметь второй динамический запрос, вызванный первым.
Ваш лучший подход, вероятно, вы упомянули. , , два динамических запроса. Первый ищет правильную функцию; второй использует его. Это дает вам гибкость в отношении аргументов функции и даже возвращаемых типов. –