2017-06-22 52 views
0

我想使用Oracle中的表創建存儲過程並且想要在SAS EG中訪問。想要創建帶有計算變量的新表的存儲過程

我有以下代碼。

create table xyz as 
select * from ( 
    select a,b,c,d 
    from table_name 
) 
pivot (MIN('X') for Variable_name in ( 
    'PQR' as PQR, 'PGT' as PGT, 'KLD' as KLD, 
'opd' as opd 
)  
) 
order by Variable_name; 

是否有可能將此表作爲存儲過程?如果不是,那麼請提出解決方案。

+0

將表作爲存儲過程是什麼意思?你需要一個存儲過程,在運行時會創建一個表? – Nitish

+0

也許你正在試圖創建一個視圖來執行該透視查詢,而不是在固定時間點上具有結果的表格?你可以有一個返回流水線表類型的函數,但是這裏的視圖看起來很合適。 –

+0

@nitish是的,我想創建一個存儲過程,運行時將創建一個表格 。 –

回答

1

如果我正確理解你的問題,你應該可以使用SQL pass-through來做到這一點。你只需要在SAS的libname聲明,這將是這個樣子指定Oracle數據庫:

libname mydblib oracle user=user_name password=pw path='myoracleserver'; 

然後,您可以在SAS訪問此使用proc sql

proc sql; 
connect using mydblib; 

create table xyz as 
select * from connection to mydblib (
select * from ( 
    select a,b,c,d 
    from table_name 
) 
pivot (MIN('X') for Variable_name in ( 
    'PQR' as PQR, 'PGT' as PGT, 'KLD' as KLD, 
'opd' as opd 
)  
) 
order by Variable_name 
); 
quit; 

此代碼在SAS工作庫中創建表xyz

+0

我們已經試過這個查詢,但得到了以下錯誤: 錯誤:找不到ETLDM引擎。 錯誤:到etldm DBMS的連接當前不受支持,或者未安裝在您的站點上。 –

+0

您使用的是什麼版本的SAS EG?您可能需要按照以下網址升級到版本7.12:http://support.sas.com/kb/59/266.html –