Команда T-SQL Delete на основе табличной переменной - PullRequest
1 голос
/ 19 августа 2010

Мне нужно удалить несколько строк из таблицы, где индексы равны индексам в табличной переменной

  declare @m_table as table
  (
     number NUMERIC(18,0)
  )
...
inserting some rows into @m_table
...
DELETE ct FROM [dbo].[customer_task] ct
          inner join project_customer pc on pc.id_customer = @m_table.number
          inner join customer_user cu on cu.id_project_customer = pc.id
WHERE ct.id_csr_user = cu.id AND ct.id_status = 1;

но этот код генерирует ошибку: Должен объявить скалярную переменную "@m_table" Как это решить?

Ответы [ 2 ]

2 голосов
/ 19 августа 2010

Возможно, в этих '...'

у вас есть 'GO' (разделитель пакетов). Объявления переменных не охватывают пакеты.

1 голос
/ 19 августа 2010

Ошибка означает, что SQL ожидает, что вы будете обрабатывать @m_table как стандартную таблицу, а не как скалярную (целую, разрядную и т. Д.) Переменную.Возможно, что-то подобное будет работать?

DELETE ct FROM [dbo].[customer_task] ct
WHERE ct.id_csr_user IN (
    SELECT cu.id FROM customer_user cu
    INNER JOIN project_customer pc ON pc.id = cu.id_project_customer
    WHERE pc.id_customer IN (SELECT number FROM @m_table.number)
) AND ct.id_status = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...