#sql #sql_server
Необходимо инициализировать переменную и присвоить ей значение, которое хранит один
из столбцов таблицы. Потом надо проверить, равно ли это значение переменной 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)
Как можно сделать проверку?
Ответы
Ответ 1
правильный и безопасный синтаксис вашей процедуры будет таким: 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
Комментариев нет:
Отправить комментарий