#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
Комментариев нет:
Отправить комментарий