Передать столбцы ORDER BY в качестве параметров в SQL - PullRequest
1 голос
/ 18 февраля 2020

Я создал хранимую процедуру, которая принимает входные параметры и возвращает набор результатов, чтобы я мог использовать его для служб 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...