2011-06-22 47 views
-1

我已在上一個腳本文件,然後其他腳本如何顯示 - 砸Oracle日誌表狀態文件

DECLARE table_exist PLS_INTEGER; 
BEGIN 
    SELECT COUNT(*) INTO table_exist FROM USER_TABLES WHERE table_name = 'SampleTable'; 

    IF table_exist = 1 THEN 
     EXECUTE IMMEDIATE 'DROP TABLE SampleTable'; 
    END IF; 

END; 

.... other script commands ....... 

我想知道什麼是上述語句的結果如下。目前我有一個記錄所有腳本及其結果的日誌文件。由於上述語句沒有以Table Dropped之類的狀態終止,所以後面的腳本命令出錯了。這怎麼可以避免?

+0

END後添加了「/」;它現在正在正確執行。日誌文件顯示「PL/SQL過程已成功完成」。在此之後,後續的腳本命令不會出錯。 – kalls

回答

1

「我在END之後加了一個」/「,它現在正在執行正確的 。

斜槓必須執行一個SQL腳本。所以,你添加了斜線並執行腳本,這導致後續腳本成功。誰會推銷它?

主要的一點是幸福,你的程序是錯誤的:動態刪除表是一個代碼味道。在某些其他RDBMS產品中可能有必要,但Oracle具有許多功能。告訴我們您的實際業務需求,我們可以告訴你一個更好的方法來實現它。

+0

我同意你的有效答案。在我所問的問題上,因爲上述聲明沒有被終止,所以後面的命令正在出錯。對不起,不清楚。如果你建議不使用動態查詢,我可以檢查其他方式來查看錶是否存在? – kalls

+0

@Kalis - 重點是,不是如何測試表是否存在,而是爲什麼你有一個過程取決於放棄它。 DDL不是那種應該重複運行的東西。一旦應該夠了。 – APC