【发布时间】:2016-07-18 12:48:59
【问题描述】:
我从以下 T-SQL 查询中收到此错误。
错误信息:
消息 102,级别 15,状态 1,第 13 行 '101' 附近的语法不正确
谁能发现这里的错误在哪里?使用 Management Studio / SQLServerExpress 所需的结果是插入新记录或更新现有记录。
以下是我的查询:
IF EXISTS (SELECT * FROM Product WHERE ProductID = 101)
UPDATE Product SET
ProductID = 101 , InsurerID = 1, CategoryID =1, Name = 'Landlord',
[description] ='Allianz Landlord', label = 'NULL', AssumptionRef ='NULL',
QuoteProviderKey ='A75',AccidentalDamageCover =0, ProductBenefitGroupID = 11,
IsAvailableToBuy =1,IsAvalableToDisplay =0,PercentageContentsCover ='NULL',
ProductPolicyView ='NULL', ProductFee =NULL
WHERE ProductID = 101
ELSE
INSERT INTO Product
VALUES 101,1,1,'Landlord','Allianz Landlord','NULL','NULL','A75',0,11,1,0,'NULL','NULL',NULL
WHERE ProductID = 101
【问题讨论】:
-
你分别测试了调用的组成部分吗?
-
您在
INSERT语句的末尾有一个WHERE ProductID = 101。还可以在VALUES周围添加 () 像这样VALUES(101,....... ) -
将括号添加到 VALUES (...)
-
简单的错字,应该关闭
-
您没有提及您使用的是哪个版本的 SQL Server,但对于 SQL Server 2008 及更高版本,您应该考虑使用
MERGE而不是IF EXISTS。后者在高并发环境中可能会失败。
标签: sql tsql sql-server-express