如果EXISTS SQL语句不起作用

时间:2016-07-18 12:49:00

标签: sql tsql sql-server-express

我从下面的T-SQL查询中收到此错误。

错误讯息:

  

Msg 102,Level 15,State 1,Line 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

3 个答案:

答案 0 :(得分:0)

替换最后一个where子句,因为根据您的场景,您不需要在INSERT语句中的位置 尝试运行这个

std::tr1::shared_ptr<ObjectData> ObjectLoader::getModel() {
    return object;
}

ObjectLoader::ObjectLoader(std::string objName) {
    indexChecked = false;
    colorChecked = false;
    std::string fileName = objName;
    object = std::tr1::shared_ptr<ObjectData>(new ObjectData());
}

答案 1 :(得分:0)

您的INSERT语句设有WHERE条款,VALUES设置为INSERT INTO Product VALUES 101 ,1 ,1 ,'Landlord' ,'Allianz Landlord' ,'NULL' ,'NULL' ,'A75' ,0 ,11 ,1 ,0 ,'NULL' ,'NULL' ,NULL WHERE ProductID = 101 ,但无效:

()

您在VALUES部分以及列出的列中也遗漏了INSERT INTO Product ( ProductID ,InsurerID ,CategoryID ,NAME ,[description] ,label ,AssumptionRef ,QuoteProviderKey ,AccidentalDamageCover ,ProductBenefitGroupID ,IsAvailableToBuy ,IsAvalableToDisplay ,PercentageContentsCover ,ProductPolicyView ,ProductFee ) VALUES ( 101 ,1 ,1 ,'Landlord' ,'Allianz Landlord' ,'NULL' ,'NULL' ,'A75' ,0 ,11 ,1 ,0 ,'NULL' ,'NULL' ,NULL ) (但是,这不会给出错误,但您应该养成明确的习惯列出列)

您的陈述应如下所示:

'NULL'

另一个值得怀疑的问题是您为什么要使用字符串NULL值。如果您打算将这些字段设为NULL,则它们应为'NULL'而不是Company + RIGHT(Number,LEN(Number) - 3)

答案 2 :(得分:-1)

你忘记了开始结束

docker build --build-arg URL=<my-url> .