2010-02-15 24 views
0

我想要從Firebird 2.1存儲過程中獲取特定行的ID。我似乎無法記住語法,而且這讓我感到非常緊張。在Firebird存儲過程中選擇標量值

這是代碼在Microsoft SQL Server使用的TSQL中的外觀。

@ID = SELECT ID FROM ADDRESS WHERE 
     POBox = :POBOX AND 
     ExtendedAddress = :EXTENDEDADDRESS AND 
     StreetAddress = :STREETADDRESS AND 
     Locality = :LOCALITY AND 
     Region = :REGION AND 
     PostalCode = :POSTALCODE AND 
     CountryName = :COUNTRYNAME; 

什麼是火鳥等值?

UPDATE:本Firebird SQL migration guide認爲,這應該工作

SELECT ID INTO :ID FROM ADDRESS WHERE 
     POBox = :POBOX AND 
     ExtendedAddress = :EXTENDEDADDRESS AND 
     StreetAddress = :STREETADDRESS AND 
     Locality = :LOCALITY AND 
     Region = :REGION AND 
     PostalCode = :POSTALCODE AND 
     CountryName = :COUNTRYNAME; 

但是我想,出現語法錯誤「變成了」當我嘗試創建存儲過程。

+0

對於後人,哪個版本的FB? – pilcrow 2010-02-15 17:33:45

+0

我正在使用Firebird 2.1和2.5。我會更新這個問題來反映這一點。 – dthrasher 2010-02-15 20:28:17

回答

4

顯然,Firebird遷移指南是錯誤的。這句法工作對我來說:

SELECT ID FROM ADDRESS WHERE 
    POBox = :POBOX AND 
    ExtendedAddress = :EXTENDEDADDRESS AND 
    StreetAddress = :STREETADDRESS AND 
    Locality = :LOCALITY AND 
    Region = :REGION AND 
    PostalCode = :POSTALCODE AND 
    CountryName = :COUNTRYNAME 
INTO :ID; 

注意,INTO條款一定要來FROMWHERE條款。

+1

我很確定':COUNTRYNAME'後面的分號錯了。 – mghie 2010-02-15 20:42:06

+0

你說得對,@ mghie!愚蠢的剪切和粘貼錯誤。我糾正了我的答案。 – dthrasher 2010-02-15 22:29:02