3
因此,給定一個要在Oracle中執行的SQL文件,我們需要確定在SQL文件中要執行的塊數。例如,存在於含有以下命令的SQL文件中的一個塊,如何計算SQL文件中有多少個sql語句?
CREATE TABLE customer (id varchar2(42));
兩個塊中的以下SQL文件,
ALTER TABLE customer ADD name varchar2(42);
ALTER TABLE customer DROP COLUMN id;
和三個塊中的以下SQL文件
CREATE OR REPLACE PROCEDURE printHelloWorld IS
BEGIN
dbms_output.put_line('Hello World!');
END;
/
INSERT INTO customer VALUES ('ivan');
DROP TABLE customer;
除了在Oracle SQLDeveloper中沒有任何錯誤的情況下執行它之外,我們不能假設任何有關輸入的內容。
UPDATE
問這個問題的目的是爲了確保只會有一個說法,這是要執行,在SQL文件。我也接受這個問題的答案。能夠創建腳本將多語句SQL文件拆分爲多個文件會更好。
答案的準確程度如何?該解決方案可能涉及一些第三方分析器,其中沒有一個將100%準確。爲了直接解決一個困難的解析問題,你是否願意接受一個解決方案,這樣的代碼不能正常工作:'declare test varchar2(100):= q'< ' >';開始null; end;' –
只要它在大多數情況下都很好(因爲這些SQL腳本將用於軟件開發,這在大多數情況下可能是非惡意的),它並不一定非常準確。@jonearles –