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”。?

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 语句应该只返回一个结果,这是完全在 SQL 中执行更新的另一个原因。

于 2013-01-03T09:06:08.673 回答