Необходимо инициализировать переменную и присвоить ей значение, которое хранит один из столбцов таблицы. Потом надо проверить, равно ли это значение переменной 11.
Пытаюсь сделать таким образом:
CREATE PROCEDURE Functions @codes INT
AS
DECLARE @ans INT;
SET @ans = SELECT [Код ответа] FROM [SofI].[dbo].[Журнал] WHERE
[Код сеанса] = @codes AND [Код вопроса] = 11
IF (@ans = 11)
exec FunOther
Это наверное глупо, но я не знаю как иначе, даже не знаю как иначе (без использования переменной) проверить условие равенства. Так тоже нельзя:
IF ((SELECT [Код ответа] FROM [SofI].[dbo].[Журнал] WHERE [Код сеанса]
= @codes AND [Код вопроса] = 11) = 11)
Как можно сделать проверку?
Ответ
правильный и безопасный синтаксис вашей процедуры будет таким:
CREATE PROCEDURE Functions @codes INT
AS
DECLARE @ans INT;
SET @ans = (SELECT top 1 [Код ответа] FROM [SofI].[dbo].[Журнал] WHERE
[Код сеанса] = @codes AND [Код вопроса] = 11);
IF (@ans = 11)
exec FunOther
top 1 в селекте нужен для обеспечения нормальной работоспособности, когда после изменения данных таблицы ваш запрос вернет 2 значения.
P.S. Для решения текущей задачи можно было бы воспользоваться следующей конструкцией:
IF EXISTS(SELECT 1 FROM [SofI].[dbo].[Журнал]
WHERE [Код сеанса] = @codes AND [Код вопроса] = 11
AND [Код ответа] = 11)
exec FunOther
Комментариев нет:
Отправить комментарий