2012-04-19 30 views
1
private final static String EXTERNAL_DATA_DIR_PATH = "E:/rptax/input/RPTAX_TAPEDATE_20120406"; 

PreparedStatement stmt1 = conn.prepareStatement("create or replace EXT_DATA_DIR as ?"); 
     stmt1.setString(1, EXTERNAL_DATA_DIR_PATH); 
     stmt1.execute(); 

這給了我... java.sql.SQLException:ORA-01780:需要字符串字面量?ORA-01780:使用預準備語句所需的字符串文字

+0

這是DDL,綁定變量是DML – Glenn 2012-04-19 16:58:39

回答

3

您不能在DDL語句中使用綁定變量,例如CREATE DIRECTORY語句。您必須使用字符串連接來生成DDL(請注意,在REPLACE之後您還缺少關鍵字DIRECTORY)。

一般來說,您希望Java應用程序發出DDL是很常見的。在創建其他數據庫對象(如表和視圖)的同時,您的目錄對象應作爲安裝腳本的一部分在數據庫中創建。

作爲完整性檢查,您的EXTERNAL_DATA_DIR_PATH是數據庫服務器上的目錄,對不對?這不是應用程序服務器或客戶機上的路徑。

+0

「EXTERNAL_DATA_DIR_PATH是數據庫服務器上的一個目錄,對吧?」...是的,我正在沙箱中處理數據集大小的本地b/c。你的回答很有幫助謝謝。 – user1344581 2012-04-19 17:24:14