【发布时间】:2018-06-29 14:30:44
【问题描述】:
(使用 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;
一切似乎都在解析,直到它到达“end if;”当它给我一个“语法错误”时。
我尝试了一个 CASE 语句,但失败得很惨……只有在检查相同的变量/字段值时,CASE 似乎才合适。
问题 1:end/end if 后面的正确语法是什么?我到处看,它都说要使用分号(;)。 问题2:有没有更好的方法来捕捉这只老鼠?
感谢任何帮助。
谢谢, 鲍勃
【问题讨论】:
-
向我们显示错误消息。另外,提醒一下 0 不等于 NULL
-
SQL Server 没有
END IF。它有由BEGIN/END分隔的语句块。 -
错误信息:Msg 102, Level 15, State 1, Line 43 'END' 附近的语法不正确另外,在 DECLARE 语句中的值设置为 0...
-
@Gordon Linoff ...这太容易了...谢谢。如何让您的评论成为我的答案?
标签: sql sql-server sql-server-2008-r2