2012-09-12 61 views
-2

我有一個非常複雜的Oracle包,其中包含多個過程,函數,記錄等。我想要做的是將存儲過程作爲BI管理工具中的物理表訪問,但該工具不支持將Oracle存儲過程定義爲表,並建議將SP重寫爲函數。如何從函數調用Oracle存儲過程

而不是重新發明輪子(包)。我正在考慮創建一個新的Oracle函數,該函數調用存儲過程並在BI管理工具中訪問該函數。我的問題是?

「你可以從Oracle函數調用Oracle包嗎? - 如果是例子??」

不要讓不知道BI勸阻你回答這個問題 - 它沒有從要求它;-)

+0

我不確定我是否理解你的問題。沒有什麼可以調用一個包,因爲一個包不可執行 - 它只是一些其他對象的集合,其中一些是可執行的。函數當然可以調用程序包中定義的過程或函數。如果程序包中的過程正在做一些影響調用函數純度級別的事情(即,如果過程修改了數據庫的狀態),該函數將不會從SQL調用(儘管它可以從PL/SQL中調用)。我不明白這是如何幫助您將PL/SQL作爲物理表訪問的。 –

+1

在Oracle中有'FUNCTION'和'PROCEDURE'和'PACKAGE'。一個'PACKAGE'可以包含一個或多個'FUNCTIONS'和/或'PROCEDURES'。你可以寫一個'FUNCTION'來調用一個'PACKAGE'中的'FUNCTION'或'PROCEDURE',這是沒有問題的。但是你不清楚的問題的部分是你以存儲過程作爲表訪問的意思。你能舉一個例子,你的BI工具的屏幕截圖(你使用什麼工具)等等? – hol

回答