繁体   English   中英

在if…then(SQL)中使用插入语句

[英]Using an insert statement in an if … then (SQL)

(使用SQL Server 2008R2)我在表中的记录中有2个值,这些值永远不会同时包含数据。 我想将记录插入到2个联结表中的1个中,具体取决于哪个字段具有数据。

SELECT @val1 = [propVal1ID]
        ,@val2 = [propVal2ID]
FROM [proposalPackage] 
WHERE [proposalPackageID] = @proposal

IF @val1 > 0
    INSERT INTO [jTable1]
                ([projectID]
                ,[value1_ID]
                ,[subValue1_ID]
                ,[priority]
                ,[isActive])
            SELECT
                @project as projectID
                ,@val1 as [value1_ID]
                ,[subValue1ID] as [subValue1_ID]
                ,1 as [priority]
                ,'true' as [isActive]
            FROM [proposalPackage]
            WHERE [proposalPackageID] = @proposal
ELSE IF @val2 > 0
    INSERT INTO [jTable2]
                ([projectID]
                ,[value2_ID]
                ,[priority]
                ,[isActive])
            SELECT
                @project as projectID
                ,@val2 as [value2_ID]
                ,1 as [priority]
                ,'true' as [isActive]
            FROM [proposalPackage]
            WHERE [proposalPackageID] = @proposal
END IF;

一切似乎都可以解析,直到达到“ if; end”为止。 当它给我一个“语法错误”时。

我尝试了CASE语句,但是失败了……CASE仅在检查相同的变量/字段值时才合适。

问题1:如果在末尾处使用正确的语法是什么? 我到处看的地方都说要用分号(;)。 问题2:是否有更好的方法来捕捉此鼠标?

任何帮助表示赞赏。

谢谢,鲍勃

SQL Server不使用END IF来表示IF块的结尾,您需要将内容包装在BEGIN / END

IF @val1 > 0
BEGIN
    INSERT ... --something
END
ELSE IF @val2 > 0
BEGIN
    INSERT ... --something else
END

另外,由于在IF块中只有一个语句,因此可以完全省略BEGIN / END ,但是我不喜欢它,因为它可能导致难以发现错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM