java - ORA-01780 : string literal required using prepared statement

标签 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: string literal required ?

最佳答案

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

一般来说,您希望 Java 应用程序发布 DDL 是很不寻常的。您的目录对象应该作为安装脚本的一部分在数据库中创建,同时创建其他数据库对象(如表和 View )。

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

关于java - ORA-01780 : string literal required using prepared statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10232943/

相关文章:

java - Maven2 和 Swing 项目 : Build & run swing application

oracle - 触发检查新员工是否已存在

python - Docker python 使用 ODPI-C 进行 Oracle 数据库连接

java - 如何在不使用值更改监听器的情况下在 Oracle ADF 中获取 SelectOneRadio 值

Java - 摆脱 NullPointerException

java - 我无法通过双击执行 .jar 文件

java - 编写 @JsonParam 注解将请求正文中的 Json 字段映射到方法 args

java - 如何修复Flink管道NoClassDefFoundError : "org/apache/hadoop/conf/Configuration"

oracle - 通过ORACLE SQL LOADER导入CSV,双引号换行

oracle - 获取页面项目的 APEX 报告列值