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