В настоящее время у меня есть запрос в TSQL, который принимает набор идентификаторов продуктов и связанных с ними цен и вычисляет цены со скидкой. На данный момент идентификаторы продуктов и начальные цены находятся в базе данных, и написанный мной запрос объединяется с этими элементами. Запрос устанавливает цены на основе других продуктов, которые появились перед ним в запросе, поэтому я не могу использовать отдельные запросы для цены первого продукта, затем продукта второго и т. д. Они должны быть оценены как сборник вместе.
Теперь мне нужно преобразовать эту логику скидки в UDF с табличным значением, который будет использоваться двумя способами:
- Существующий подход, при котором необходимо будет выполнять ценообразование со скидкой для набора идентификаторов и цен, существующих в базе данных.
- Новый подход, при котором мне нужно будет передать идентификаторы и начальные цены в UDF из PHP (их не будет в БД).
Мои проблемы для каждой соответствующей точки:
- Мне по существу нужно передать таблицу в UDF. Из того, что я прочитал, это означает, что мне нужно создать свой собственный определяемый пользователем тип таблицы, запросить идентификаторы/цены моих продуктов в базе данных в этот тип таблицы, а затем передать в качестве аргумента UDF. Это правильно?
- Новый подход - это то, где я действительно потерялся, так как я не уверен, как взять то, что в основном представляет собой массив пар идентификатор/цена в PHP (например, корзина для покупок), и передать это в мой UDF, чтобы получить результирующую цену. Я мог бы вручную собрать запрос, который генерирует мою пользовательскую таблицу my из нескольких однострочных операторов и
UNION
их вместе, но в противном случае я понятия не имею, как передать несколько «строк» из PHP в UDF.
Каков правильный способ справиться с этим?