1

Я хочу использовать хранимую процедуру GetSLAClass, чтобы получить одно значение для предложения where, как показано ниже. А также я хочу использовать значения WRMaster (основная таблица) в качестве параметров хранимой процедуры. Есть ли решение? Я хочу сделать все эти работы, чтобы получить правильные данные.Как использовать хранимую процедуру в подзапросе для получения значения в предложении where с использованием основных данных запроса в качестве параметров

Это ГЗС ERRor

Msg 156, Level 15, State 1, Line 7
Неправильный синтаксис около 'EXEC' ключевых слов.

Msg 102, Level 15, State 1, Line 7
Неправильный синтаксис около '.'

Вот мой SQL-запрос (в настоящее время не работает)

SELECT 
    * 
FROM 
    WRMaster W 
WHERE 
    DATEDIFF(minute, W.AckedDateTime, W.ResolvedDateTime) <= 
     (SELECT Priority 
     FROM FMSLAClassPriorityMap 
     WHERE SLAClassKey = (EXEC dbo.GetSLAClass W.LocationKey, W.ServicCategoryKey, W.ProblemTypeKey, NULL, '')) 
WHERE WRKey=4 
+0

да хранимые процедуры могут иметь возвращаемые значения и как вход и выход параметры, позволяющие делать то, что вы просите –

+0

Я не уверен, что это возможно, есть ли другое решение или метод для таких задач? –

+0

yes Я предлагаю вам прочитать хранимые процедуры –

ответ

1

Это способ, который может сделать это,

Declare 
@lk as int, 
@sck as int, 
@pt as int, 
@slaclass as int 

select @lk = LocationKey from WRMaster where WRKey=4 
select @sck = ServicecategoryKey from WRMaster where WRKey=4 
select @pt = ProblemKey from WRMaster where WRKey=4 

EXEC dbo.GetSLAClassOutput @lk,@sck,@pt,NULL,'', @slaclass output 

SELECT * 
FROM WRMaster W 
WHERE DATEDIFF(minute, W.AckedDateTime, W.ResolvedDateTime)<= 
(
    SELECT Priority 
    FROM FMSLAClassPriorityMap 
    WHERE SLAClassKey=(@slaclass) and PriorityKey = W.PriorityKey 
) 
where WRKey=4 
+1

Используйте SP с параметром вывода - https://docs.microsoft.com/en-us/sql/connect/jdbc/using-a-stored-procedure- with-output-parameters –

+0

Есть ли только одна строка в WRMaster для определенного значения WRKey? Если это так, ваша производительность во многом зависит от того, что находится внутри хранимой процедуры (есть также накладные расходы на вызов, но, допустим, это незначительно в этом конкретном случае, хотя и добавляется). Вы можете сократить начальные выделения в один, например 'select @lk = LocationKey, @sck = ServicecategoryKey, @pt = ProblemKey из WRMaster, где WRKey = 4'. Во всяком случае, по производительности, всегда лучше встраивать. Очень близко к этому относятся встроенные таблицы UDF. Все остальное выполнено на основе RBAR. – dean

+0

@dean, Спасибо за запросы, Есть способ, который может понять это по-разному, Его ошибка. Этот ответ только для моего сценария, я прохожу WRKey. –

Смежные вопросы