2013-03-26 79 views
0

我正嘗試從FME Desktop中導入到Oracle DB中的shapefile(表示街道中心線)創建空間網絡。 'CENTRELINES'空間對象包含一個GEOM專欄,我想用它作爲網絡分析的基礎,根據路線距離作爲成本屬性來分配養老院(點)中的救護車設施(點)。任何關於解決Oracle Spatial中病態問題的方法建議都會受到歡迎,但主要問題是我是SQL初學者。我使用Oracle的documentation組成以下SQL語句:創建空間網絡時出現SQL語法錯誤

-- create an LRS geometry network 
EXEC SDO_NET.CREATE_LRS_NETWORK(
    'LRS_net', -- network name 
    'CENTRELINES', -- LRS geometry table name 
    'GEOM', -- LRS geometry column name 
    1, -- number of hierarchy levels 
    FALSE, -- directed link? 
    TRUE -- node with cost? 
); 

的腳本輸出如下:

Error starting at line 2 in command: 
EXEC SDO_NET.CREATE_LRS_NETWORK(
Error report: 
ORA-06550: line 1, column 34: 
PLS-00103: Encountered the symbol ";" when expecting one of the following: 

    () - + case mod new not null <an identifier> 
    <a double-quoted delimited-identifier> <a bind variable> 
    table continue avg count current exists max min prior sql 
    stddev sum variance execute multiset the both leading 
    trailing forall merge year month day hour minute second 
    timezone_hour timezone_minute timezone_region timezone_abbr 
    time timestamp interval date 
    <a string literal with character set specification> 
06550. 00000 - "line %s, column %s:\n%s" 
*Cause: Usually a PL/SQL compilation error. 
*Action: 

... 

Error starting at line 9 in command: 
) 
Error report: 
Unknown Command 

據我瞭解,2號線正在生產的錯誤:

PLS-00103: Encountered the symbol ";" when expecting one of the following... 

鑑於需要分號才能結束SQL查詢,爲什麼這是一個問題?

編輯:下面的腳本通過將開始/結束產生的網絡:

begin 
SDO_NET.CREATE_LRS_NETWORK(
    'LRS_net', 
    'CENTRELINES', 
    'GEOM', 
    1, 
    FALSE, 
    TRUE); 
end; 

謝謝您的幫助!

+0

我加入了開始/結束語法: – user2109092 2013-03-27 02:52:18

+1

您需要添加一個分號排隊8.改變'TRUE)''到TRUE);'。 – 2013-03-27 03:57:43

回答

3

正如documentation指出,SQL * Plus的execute命令通常必須在一行中輸入:

If your EXECUTE command cannot fit on one line because of the PL/SQL statement, use the SQL*Plus continuation character (a hyphen).

什麼它實際上是試圖在引擎蓋下運行是一個翻譯爲

BEGIN 
    SDO_NET.CREATE_LRS_NETWORK(; 
END; 
/

...這是(也許很明顯,當這樣寫)無效的PL/SQL。與空間調用本身無關。如果您確實想將其拆分爲多行,則只需使用明確的begin/end而不是簡寫exec

第二個問題,也許表明您已經運行了短版不止一次,但它不是一個功能,我很熟悉;但與初始分號錯誤無關。 (另外,分號並不是嚴格需要來結束SQL語句,但這是另一次的細節...)。

相關問題