1

私はこのコードを持っています:

CREATE TABLE #CategoriesTable
(
   CategoryId INT,
   HasAssessment BIT,
   IsScorm BIT, 
   IsExternal BIT,
   ExternalLink varchar(256), 
   SingleArtifact BIT, 
   ScormModuleUrl varchar(256),
   WindowHeight varchar(256), 
   WindowWidth varchar(256),
   DateTimeCreated date,
   HintText nvarchar(256),
   UserId INT
)

select ct.HasAssessment from #CategoriesTable ct
  where UserId = @UserId  
IF (ct.HasAssessment = 1)
BEGIN
  UPDATE #CategoriesTable SET HintText = 'With Assessment'
END    
else
BEGIN
 UPDATE #CategoriesTable SET HintText = 'With No Assessment'    
END      

SELECT *
  FROM #CategoriesTable

次のエラーが表示されます: マルチパート識別子 "ct.HasAssessment" could not be bind.?

4

1 に答える 1

1

IF ステートメントは必要ありません。更新は、標準 SQL を介して完全に実行できます。

UPDATE #CategoriesTable
SET    HintText = CASE WHEN HasAssessment = 1 
                       THEN 'With Assessment' 
                       ELSE 'With No Assessment' 
                  END 
WHERE  UserID = @UserID

IFステートメント(お勧めしません)を使用したい場合は、select ステートメントの結果を保持する変数を宣言し、この変数をステートメントで使用する必要がありますIF

この場合の select ステートメントは 1 つの結果のみを返す必要があることに注意してください。これは、更新を完全に SQL で実行するもう 1 つの理由です。

于 2013-01-03T09:06:08.673 に答える