作爲發行版的一部分,我們針對數據庫運行一些PL/SQL腳本。最近有人將;
從另一個腳本的另一個腳本的行尾離開,這意味着該腳本沒有運行。因爲這不會導致錯誤,它只是沒有運行,追查發生的事情花了相當長的一段時間。檢查sql腳本是否有效
我想在腳本運行之前檢查腳本中是否存在行尾的;
或行後面的/
。這變得更加複雜,因爲腳本中的「行」實際上可以跨越多行,如果它是語句或代碼塊的話。
對我來說,這似乎是要做到這一點,我將不得不解析腳本,然後檢查他們滿足上述。
我發現ANTLR並想知道這是否可以做到這一點,因爲似乎有existing PL/SQL grammars但看起來這將是一個簡單的檢查步驟學習曲線。
有誰知道一個簡單的方法或任何其他工具,Eclipse插件等等,我可以用它來檢查腳本中的行被丟失或者在最後一個;
或之後就行了/
?
更新 我們已經做了大部分東西Tom H suggested。腳本運行到我們的測試服務器,並且我們有一個版本表,最後更新。問題在於容器腳本中缺少的分號意味着一個腳本沒有運行,但其餘的包括更新版本號的腳本沒有錯誤地運行。因此,這個問題只能在測試中找到。這需要在運行添加了缺少分號的腳本之前恢復數據庫,因此基本上導致半天的測試時間丟失。如果有一種簡單的方法來檢查之前將腳本運行到測試服務器,它可以節省相當多的時間。
在DB版本系統我用,在更新腳本的開始我設置了版本號和它分配一個「跑」標誌,然後重置標誌爲「已完成」的腳本*年底*。 – 2009-12-08 14:50:15