На данный момент у меня есть SQL-выражение вроде этого:
SELECT
y.ID, y.STATUS, y.CONTROLID, y.TRCDE
FROM
YTDTRNI AS y
LEFT JOIN
VND AS v ON y.COMNO = v.COMNO
WHERE
TRCDE ='RC'
ORDER BY
ID DESC
Я пытаюсь использовать этот запрос внутри хранимой процедуры с использованием динамического SQL. Пока что моя хранимая процедура выглядит так:
SET @query = N'SELECT y.ID, y.STATUS, y.CONTROLID, y.TRCDE
FROM YTDTRNI AS y LEFT JOIN VND AS v ON y.COMNO = v.COMNO
WHERE TRCDE = ' + @searchtrtype + '
ORDER BY ' + @orderbycondition
Переменные @searchtrtype
и @orderbycondition
имеют тип nvarchar
.
Я использую программу ASP.NET/C# для вызова хранимой процедуры. Тем не менее, он ломается с исключением:
Выражение не булева типа в контексте, где условие ожидается около 'ORDER'
Мне кажется, что я получаю ошибку, потому что строковые значения неправильно объединены или отформатированы внутри переменной @query
.
Открыт для любых советов.
РЕДАКТИРОВАТЬ: моя хранимая процедура выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/ZQIEJ.png)
Когда я выполняю хранимую процедуру, она возвращает желаемый набор результатов, но также показывает сообщение об ошибке:
Необходимо объявить скалярную переменную "@dsearchtrtype".
Я попытался объявить его внутри тела BEGIN
и объявить его как часть параметра для хранимой процедуры, но он все еще показывает то же сообщение.