Я создал хранимую процедуру, которая принимает входные параметры и возвращает набор результатов, чтобы я мог использовать его для служб Reporting Services. Однако пользователь хотел выбрать столбцы ORDER BY по своему выбору. Итак, я попробовал что-то вроде этого:
CREATE PROCEDURE [dbo].[usp_RevenueReport]
(@ProductNumber INT,
@ProductName VARCHAR(MAX),
@ProductType VARCHAR(MAX), @SortColumns VARCHAR(MAX))
SELECT [ProductNumber],
[ProductName],
[ProductType]
FROM [dbo].[Products]
WHERE [ProductName] IN (SELECT value FROM STRING_SPLIT(@ProductName, ',') WHERE RTRIM(value) <> '')
AND [ProductType] IN (SELECT value FROM STRING_SPLIT(@ProductType, ',') WHERE RTRIM(value) <> '')
ORDER BY (SELECT value FROM STRING_SPLIT(@SortColumns, ',') WHERE RTRIM(value) <> '');
Выдает ошибку, когда я пропускаю несколько столбцов для сортировки. Как я могу отсортировать на основе того, что я передаю?
Msg 512, Уровень 16, Состояние 1, Строка 1 Подзапрос вернул более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.
Вот моя среда: Microsoft Azure SQL Хранилище данных - 10.0.10887.0 23 января 2020 г. 07:36:54 Copyright (c) Microsoft Corporation