1

インデックスがテーブル変数のインデックスと等しいテーブルからいくつかの行を削除する必要があります

  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"を宣言する必要がありますそれを解決する方法は?

4

2 に答える 2

2

あなたはおそらくGOそれらの'...'に''(バッチセパレータ)を持っています

変数宣言はバッチにまたがりません。

于 2010-08-19T07:07:38.563 に答える
1

@m_tableこのエラーは、SQLが、スカラー(int、bitなど)変数ではなく、標準テーブルのように扱うことを期待していることを意味します。おそらくこのようなものが機能しますか?

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;
于 2010-08-19T07:09:48.413 に答える