2013-02-19 59 views

回答

1

該架構一般不會做出很大的意義...

你可以,假設.SQL文件存儲在數據庫服務器上,編寫使用UTL_FILE讀取文件中的PL/SQL塊,確定分隔符,然後使用動態SQL來執行每個單獨的語句。但是,這將是一個相當大量的工作來獲得正確的。同樣,假設.SQL文件存儲在數據庫服務器上,您也可以編寫一個Java存儲過程,該存儲過程調用主機操作系統,啓動SQL * Plus,連接回數據庫並執行。 SQL文件。這樣做比嘗試自己分析文件的內容要少。但它會涉及第二個會話和一個單獨的可執行文件,這也增加了一些複雜性。

是否有一個原因,您不只是啓動SQL * Plus,將它傳遞給.SQL文件,並讓SQL * Plus運行? PL/SQL在這種情況下添加了什麼?

+0

這個想法如何:我測試了創建Java程序,該程序使用Oracle方案讀取.sql文件。但是,我對註釋進入sql文件有問題。是否有可能創建從Java代碼啓動PL/SQL塊的Java程序,然後PL/SQL塊讀取sql文件並創建Oracle方案。主要目的是創建Java獨立應用程序,該應用程序通過網絡安裝Oracle方案或部署在Oracle服務器上。任何想法什麼是最好的解決方案? – user1908169 2013-02-19 22:26:22

+0

@ user1908169 - PL/SQL在數據庫服務器上運行,因此它只能訪問數據庫所具有的資源。如果您正在討論運行安裝程序的Java應用程序,那麼該應用程序可能運行於數據庫服務器之外的其他位置。所以嘗試使用PL/SQL是沒有意義的。如果這是一個您正在構建的產品,那麼爲它提供一個不同的輸入文件似乎更合理,該輸入文件以更容易解析的格式(比如XML文件)存儲要運行的語句。 – 2013-02-19 22:31:18

+0

@ user1908169 - 然而,從安全角度來看,Oracle DBA將更願意採用您提供並執行的.SQL文件,而不是授予他們必須爲應用程序設置的任何Oracle數據庫帳戶以連接創建一堆對象的權限(如果你確實意味着創建一個意味着創建用戶的模式,那就更加重要)。 – 2013-02-19 22:32:51