[英]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.