3

今朝これを何度も調べましたが、問題が見つかりません。それはおそらく非常に単純であり、誰かがそれを指摘すると、私はばかのように感じるでしょう. この SQL は何に失敗しますか?

-- Get CurrentRowCount
DECLARE @MaxID INT

SELECT @MaxID = ISNULL(MAX(WorkTypeID),0)
FROM caWorkType

ALTER TABLE #WorkType ADD _RowID INT NOT NULL IDENTITY(@MaxID,1)

私が得ているエラーは次のとおりです。一時テーブル #WorkType にも「_RowID」という名前の列がありません

4

2 に答える 2

4

このIDENTITY句は変数が好きではありません。sp_executesql を使用してALTERステートメントを実行します。

-- Get CurrentRowCount
DECLARE @MaxID INT

SELECT @MaxID = ISNULL(MAX(WorkTypeID),0)
FROM caWorkType

DECLARE @sql varchar(max);
SET @sql = 'ALTER TABLE #WorkType ADD _RowID INT NOT NULL IDENTITY(' +
        CAST(@MaxID as varchar) +
        ',1)';
EXEC sp_executesql @statement = @sql;
于 2009-11-30T05:30:11.740 に答える
2

失敗するのは、一時テーブルに列を追加しようとする行為ではありませんが、変数を使用して値を指定することはできませんIDENTITY

よくない:

ALTER TABLE #WorkType ADD _RowID INT NOT NULL IDENTITY(@MaxID,1)

OK :

ALTER TABLE #WorkType ADD _RowID INT NOT NULL IDENTITY(55,1)

マルク

于 2009-11-30T05:27:06.630 に答える