使用具有变量值的 IF 语句时 MYSQL 查询出错

Error in MYSQL Query while using IF statement with variable values

我在 MYSQL 中执行此查询时遇到错误。你能帮我找出问题所在吗?这是查询。

IF ('"+ @[User::CrMgName] +"' IS NULL)
THEN
Update companies
  Set crm_id = '"+ @[User::crm_guid] +"'
Where TRIM(LOWER(company_directory_name)) = '"+ @[User::EquityStoryId] +"'

ELSE
Update companies
  Set cr_manager = '"+ @[User::CrMgName] +"',
crm_id = '"+ @[User::crm_guid] +"'
Where TRIM(LOWER(company_directory_name)) = '"+ @[User::EquityStoryId] +"'  
END IF

评论后,如果在脚本中使用IF语句表示的问题。

所以,解决方案有两个:

  1. (如 Fari 所说):使用存储过程
  2. IF 语句替换为 CASE 语句

对于解决方案 2,试试这个:

UPDATE companies
SET crm_id = 
CASE 
   WHEN @[User::CrMgName] IS NULL THEN '"+ @[User::crm_guid] +"'
   ELSE'"+ @[User::crm_guid] +"'
END,
cr_manager = 
CASE
  WHEN @[User::CrMgName] IS NULL THEN cr_manager
  ELSE '"+ @[User::CrMgName] +"'
END
WHERE TRIM(LOWER(company_directory_name)) = '"+ @[User::EquityStoryId] +"'