Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Инициализация переменной в SQL

#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

Комментариев нет:

Отправить комментарий