2012-07-02 49 views
0

Oracle Ref Cursors只能與過程和函數一起使用,還可以與通過ODP.NET OracleCommand對象(包含在CommandText屬性中的字符串)發佈的PL/SQL一起使用?Oracle Ref遊標只能與程序和函數一起使用嗎?

+1

程序和函數__ PL/SQL。遊標可以在任何Pl/SQL塊中使用,即'begin ... end;' – Ben

+0

是的,無疑它們是PL/SQL,我只是想知道Ref遊標是否限制使用它們,我相信你的評論的後半部分答案。我已經投票評論你的評論,因爲它不會讓我檢查它作爲答案。 – Paul

回答

1

這取決於你想要完成什麼。

您當然可以從.Net或內部使用REF CURSOR的Java應用程序執行匿名PL/SQL塊。但是,由於匿名PL/SQL塊不接受或返回參數,因此無法將您在匿名PL/SQL塊中打開的REF CURSOR返回給調用應用程序。從應用程序架構的角度來看,我會強烈主張,如果您需要進行需要PL/SQL的處理,則該處理應該被合併到一個已命名的PL/SQL塊(過程或函數)中一個包並存儲在數據庫中。在PL/SQL中實現存儲在數據庫外部的邏輯通常是一個壞主意。

+0

我以爲匿名PL/SQL可以通過ODP.NET中的輸出綁定變量/參數返回數據,那麼Ref Cursors不是這種情況嗎?我可以理解,放在數據庫之外是一個壞主意,不幸的是,這個決定不在我的手中。 – Paul

+0

@保羅 - 我不相信'REF CURSOR'是可能的。顯然,我希望有人指出我的知識存在差距。 –

+0

它似乎有可能與一個存儲的功能(例如[http://stackoverflow.com/questions/6360244/how-to-call-an-oracle-function-with-a-ref-cursor-as-out-parameter -from-c]),但據我所知,你是正確的,這對於匿名PL/SQL是不可能的。 – Paul

相關問題