0

FMEデスクトップを使用してOracleDBにインポートされたシェープファイル(通りの中心線を表す)から空間ネットワークを作成しようとしています。'CENTRELINES'空間オブジェクトには、コスト属性としてルート距離に基づいてリタイヤメントホーム(ポイント)間で救急車施設(ポイント)を割り当てるためのネットワーク分析の基礎として使用したいGEOM列が含まれています。Oracle Spatialでこの病的な問題に取り組むための方法論に関するアドバイスは歓迎されますが、主な問題は、私がSQLの初心者であるということです。Oracleのドキュメントを使用して、次の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/endを追加してネットワークを作成しました。

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

ご協力ありがとうございました!

4

1 に答える 1

3

ドキュメントに記載されているように、SQL*Plusexecuteコマンドは通常1行で入力する必要があります。

PL / SQL文が原因でEXECUTEコマンドが1行に収まらない場合は、SQL * Plus継続文字(ハイフン)を使用してください。

それが実際に内部で実行しようとしているのは、次のような翻訳です

BEGIN
    SDO_NET.CREATE_LRS_NETWORK(;
END;
/

...これは(おそらくそのように書かれている場合は明らかに)有効なPL/SQLではありません。空間呼び出し自体とは何の関係もありません。複数の行に分割したい場合は、省略形ではなく、明示的なbegin/を使用できます。endexec

2番目の問題は、短いバージョンを複数回実行したことを示唆している可能性がありますが、これは私がよく知っている機能ではありません。ただし、最初のセミコロンエラーとは関係ありません。(また、 SQLステートメントを終了するためにセミコロンは厳密には必要ありませんが、それはまた別の詳細です...)。

于 2013-03-27T00:31:37.047 に答える