2015-05-05 155 views
0

我對這個爛攤子感到抱歉,但是我想要做的是爲ops $ u2970創建一個變量。我嘗試了一些我在網上找到的方法,但他們沒有奏效。這是一個更大的查詢的一部分,所以用變量代替ops $ u2970會很好,尤其是因爲在將來整個查詢中需要更改它。在Python中這很容易,但是這是sql。在sql中聲明一個變量

--***Creates a VIEW of all TIS GN's with their Corridor ID, Accum Mile and XY coords 
create or replace view GN_DC_LOCATE as 
select distinct t.gn_id, n.tcr_rt||n.tcr_rb DC_ID, 
    case when n.beg_brkm<n.end_brkm then 
       round(((t.gn_km-n.beg_brkm)+n.beg_tcrkm)*.6213712,3) 
     else round(((n.beg_brkm-t.gn_km)+n.beg_tcrkm)*.6213712,3) 
      end as GN_DCMI,c.x_coord TIS_XCOORD, c.y_coord TIS_YCOORD 
from tis.tis_gn_locate t,tis.tis_tcr_lookup n,tis.tis_gn_coords c 
where t.route=n.br_id and t.gn_km>=n.beg_abskm and t.gn_km<=n.end_abskm 
     and t.gn_id=c.gn_id 

--***Creates a VIEW of all begin and end GN's on ops$u2087.sec_segments 
--from the view GN_DC_LOCATE and adds in the records where GN=999999999999 
create or replace view PVMGT_SEGS_GNs_DCMI as 
select p.corridor_code_rb, 
     b.gn_id,b.GN_DCMI TIS_MI, 
     b.TIS_XCOORD TIS_X,b.TIS_YCOORD TIS_Y 
from ops$u2970.sec_segments p, GN_DC_LOCATE b 
where p.corridor_code_rb=b.DC_ID and p.beg_gn=b.gn_id 
UNION 
select p.corridor_code_rb, 
    e.gn_id,e.GN_DCMI TIS_MI,e.TIS_XCOORD TIS_X,e.TIS_YCOORD TIS_Y 
from ops$u2970.sec_segments p,GN_DC_LOCATE e 
where p.corridor_code_rb=e.DC_ID and p.end_gn=e.gn_id 
UNION 
select p.corridor_code_rb,999999999999 GN_ID, NULL TIS_MI,NULL TIS_X,NULL TIS_Y 
from ops$u2970.sec_segments p 
where p.beg_gn=999999999999 or p.end_gn=999999999999 
order by 1,3 
+0

哪個dbms? (在這裏不是ANSI SQL ...) – jarlh

+0

那麼我使用PL-SQL Developer –

+0

Ya其10g。 10.2.0 –

回答

0

在Oracle VIEW定義中不可能使用變量。變量在存儲過程,函數,觸發器和包中都是允許的。