2017-01-04 19 views
0

SELECTステートメントを実行して、何らかの計算を実行するビューを作成しようとしています。SELECTステートメント内のSQL Declare変数

Iが再び

Shapeフィールドが格納地理データを算出することなく、別のフィールドで算出された値を使用する、及びsde.st_y/xは、形状

の緯度/経度を返す関数です。

例:あなたは二度関数を呼び出すにしたくない場合は

SELECT 
    t.shape AS "Shape", 
    t.code AS "GeocodeTo", 
    sde.st_x(t.shape) AS "Longitude_decimal", 
    --The following field calculates sde.st_x again unnecesairly 
    TRUNC(ABS(sde.st_x(t.shape)) as "Absolute"   
FROM 
    towers t 

答えて

1

この

を試してみてください

しかし、私はあなたが二回

1

コールサブクエリ内の関数を、それを呼び出すと外の値を再利用しても、Oracleがあなたの元のクエリに一度だけ関数を呼び出すには十分にスマートになると思う。

SELECT "Shape", 
    "GeocodeTo", 
    "Longitude_decimal", 
    TRUNC(ABS("Longitude_decimal") AS "Absolute" 
FROM 
    (SELECT t.shape  AS "Shape", 
    t.code   AS "GeocodeTo", 
    sde.st_x(t.shape) AS "Longitude_decimal", 
    FROM towers t 
); 
関連する問題