2016-12-16 28 views
1

这是我到目前为止,但我不能让它正常运行。我不断收到语法不正确的错误ON FROM FROM TBL_AIRPORT AIR。但我无法弄清楚应该在那里,或者改变什么,所以我不能运行它。任何帮助,将不胜感激。创建一个存储过程来返回一个机场列表lat和long

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE SP_GETAIRPORTS 
    @GEOLOCATION GEOGRAPHY = NULL, 
    @ICAOCODE VARCHAR(10) = NULL, 
    @IATACODE VARCHAR(4) = NULL, 
    @COUNTRY_FK INT = NULL, 
    @STRNAME VARCHAR(MAX) = NULL, 
    @STRCITY VARCHAR(MAX) = NULL, 
    @INT_ELEVATION INT = NULL 
AS 
BEGIN TRANSACTION 
BEGIN TRY 
    SET NOCOUNT ON 
    SET ANSI_WARNINGS OFF 

    SELECT 
     GEOLOCATION.LAT, GEOLOCATION.LONG, ICAOCODE, IATACODE, 
     STRNAME, STRCITY, COUNTRY.COUNTRYNAME, INT_ELEVATION 
    FROM 
     TBL_AIPORT AIR 
    FROM 
     TBL_AIRPORT AIR 
    JOIN 
     TBL_COUNTRY C ON C.COUNTRY_ID = AIR.COUNTRY_FK 
    WHERE 
     GEOLOCATION.LAT <> 0 OR GEOLOCATION.LONG <> 0 
END TRY 
BEGIN CATCH 
    -- ..... 
END CATCH 
+0

那是因为你有多余的 'FROM TBL_AIRPORT AIR' –

回答

2

重写你select条款,因为你用“TBL_AIRPORT”表两次相同的关键字“FROM”,并还适当编写开始,提交事务的语法。

SELECT 
    GEOLOCATION.LAT, GEOLOCATION.LONG, ICAOCODE, IATACODE, STRNAME, 
    STRCITY, COUNTRY.COUNTRYNAME, INT_ELEVATION 
FROM 
    TBL_AIRPORT AIR 
JOIN 
    TBL_COUNTRY C ON C.COUNTRY_ID = AIR.COUNTRY_FK 
WHERE 
    GEOLOCATION.LAT <> 0 OR GEOLOCATION.LONG <> 0 
+0

是的!很简单。这让我疯狂。谢谢 – user7299268

+0

它现在不返回geolocation.lat或geolocation.long任何东西。我得到一个错误,找不到'Lat'字段的属性。Microsoft.Sql.serverttype ..... – user7299268

+0

LAT和LONG在哪个表中显示..? – Mansoor

相关问题