簡體   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