2010-05-17 36 views
1

對不起,我的英語不好。我希望你能得到我想要的。如何驗證我的PL/SQL語法

我有很多* .sql文件,我想寫一個程序來編譯它們,並告訴我是否有任何問題(問題或錯誤)。

我的一個朋友爲java編寫了一個IDE,因爲我記得他使用javac來生成錯誤代碼。另一方面,我見過IDE Visual Studio或者Netbean會自動告訴你是否有錯誤。所以現在我想知道任何人有任何想法如何可以用SQL文件做到這一點?

換句話說,我想編寫一個編譯我的代碼並告訴我什麼是我的錯誤的SQL文件編輯器(PL/SQL)。

當我嘗試在SQL PLUS中編譯它們時,會出現這個問題,它很無聊。

請幫我...

回答

0

的SQL * Plus可以在命令行上運行。因此,您可以以類似於朋友使用javac的方式使用它。

> sqlplus username/[email protected]_identifier @scriptToExecute.sql 

請記住,您的操作可能會產生後果,因此您需要爲sql執行回滾,並且可能需要爲ddl/dml命令臨時命名。

或者,也可以下載Oracle的免費SQL Developer工具,該工具已完成所有工作。

+0

謝謝你,我幫你這麼多... – Amir 2010-05-17 07:36:08

4

.sql文件可能包含許多不同的東西 - DDL,SQL查詢,DML,PL/SQL匿名塊,以及用於視圖和存儲過程/函數/包的CREATE命令。

您需要知道那些.sql文件中包含的內容。如果你只是在SQL * Plus中盲目運行它們,你不知道它們會做什麼 - 我可以在你的home文件夾中給你一組.sql腳本,你會發現你的數據庫會很糟糕如果你隨意運行它們 - 一些腳本創建/修改/刪除表,或刪除或修改數據,一些腳本提交它們的更改(因此在運行腳本後發出ROLLBACK不會對你有幫助),其他腳本啓動或停止數據庫:)

如果您知道所有的.sql腳本只包含CREATE命令的視圖或存儲過程,函數和/或包,您可以在SQL * Plus命令行中全部運行它們 - 您可以生成一個相當容易的腳本,它們會一個接一個地運行它們 - 然後查看USER_OBJECTS/ALL_OBJECTS/DBA_OBJECTS中的任何信息STATUS = 'INVALID'和查詢USER_ERRORS有關任何編譯器錯誤。但是,請記住,即使這種方法是破壞性的,因爲它會覆蓋在你運行它們的數據庫中的任何現有的存儲過程等。

+0

;))謝謝,我知道。實際上最近我參加了配置團隊,他們在週末更新了他們的軟件,因此,我們只需編譯其他開發人員和客戶使用新源的所有腳本... 最後一位經理製作了一個批處理文件sql代碼如下: sta「x:\ xxx \ sss \ kkk.sql」 sta「xx:\ xxx \ sss \ dddd.sql」 sta「x:\ xxx \ sss \ kss.sql」 sta 「xx:\ xxx \ sss \ mmmdd.sql」 ... 之間運行這個sql文件我們收到錯誤,他把「/」一些時間和錯誤將解決,但我認爲這項工作是如此無聊。在這種情況下,我想寫一個程序爲我做這個。 任何命令? – Amir 2010-05-17 07:34:33

+0

@rima,這是另一個問題嗎? 「/」*是*在SQL * Plus中執行PL/SQL塊的命令。測試可能很無聊,但這是工作的一部分:) – 2010-05-17 07:53:59