2009-11-20 53 views
1

我已經創建了以下sql語句,$()中的每一件事都是一個變量(來自我們在我們網站上使用的模塊,所以$(varname)是這個格式的正確格式)情況下,不@varname。如果語句在SQL中遇到格式問題

它不斷告訴我有近那麼錯誤...我怎麼格式化這個正常嗎?

謝謝
馬特

回答

3

擺脫THEN,並添加在存儲過程調用之前調用。

IF ($(Shiptobilling) = 'yes') 
BEGIN 
EXEC CardOrder_Add $(UserID), $(Firstname), $(Lastname), $(BillStreet1), $(BillCity), $(BillState), $(BillCountry), $(BillZip), getdate(), $(ExpiryDate) 
END 
ELSE 
BEGIN 
EXEC CardOrder_Add $(UserID), $(Firstname), $(Lastname), $(ShipStreet1), $(ShipCity), $(ShipState), $(ShipCountry), $(ShipZip), getdate(), $(ExpiryDate) 
END 

此外,你應該使用一些更好的壓痕。如果這是我的代碼,我會格式化更是這樣的:

IF ($(Shiptobilling) = 'yes') 
    BEGIN 
    EXEC CardOrder_Add 
    $(UserID), 
    $(Firstname), 
    $(Lastname), 
    $(BillStreet1), 
    $(BillCity), 
    $(BillState), 
    $(BillCountry), 
    $(BillZip), 
    getdate(), 
    $(ExpiryDate) 
    END 
ELSE 
    BEGIN 
    EXEC CardOrder_Add 
    $(UserID), 
    $(Firstname), 
    $(Lastname), 
    $(ShipStreet1), 
    $(ShipCity), 
    $(ShipState), 
    $(ShipCountry), 
    $(ShipZip), 
    getdate(), 
    $(ExpiryDate) 
    END 

這是相當長的,但話又說回來很容易維護,因爲你不必左右滾動看到整個過程調用做。

+0

+1打我吧 – 2009-11-20 20:14:00

+0

對不起,縮進是由於從我使用的沙箱中複製粘貼格式不佳造成的......我擺脫了那個,現在我又收到另一個錯誤:CardOrder_Add附近的語法錯誤 – Matt 2009-11-20 20:14:03

+0

@Matt:'EXEC'聲明肯定會對此有所幫助。至少,我假設'CardOrder_Add'是一個存儲過程。 – Welbog 2009-11-20 20:16:42

1

沒有那麼在T-SQL如果statments

1

還有額外的「然後」正如其他人所說,你將需要添加Exec中的if語句的身體內的存儲過程調用之前。