ORA-01780:使用预准备语句所需的字符串文字

时间:2012-04-19 16:52:16

标签: java oracle

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:需要字符串文字吗?

1 个答案:

答案 0 :(得分:3)

您不能在DDL语句中使用绑定变量,例如CREATE DIRECTORY语句。您必须使用字符串连接来生成DDL(请注意,您在DIRECTORY之后也错过了关键字REPLACE)。

通常,您希望Java应用程序发出DDL是相当不寻常的。您的目录对象应该作为安装脚本的一部分在数据库中创建,同时创建其他数据库对象(如表和视图)。

作为完整性检查,您的EXTERNAL_DATA_DIR_PATH是数据库服务器上的目录,对吧?它不是应用程序服务器或客户端计算机上的路径。