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: 文字列リテラルが必要ですか?

4

1 に答える 1

3

ステートメントなどの DDL ステートメントでバインド変数を使用することはできませんCREATE DIRECTORY。DDL を生成するには、文字列連結を使用する必要があります (DIRECTORY後のキーワードも欠落していることに注意してくださいREPLACE)。

一般に、Java アプリケーションで DDL を発行することはあまりありません。ディレクトリ オブジェクトは、テーブルやビューなどの他のデータベース オブジェクトが作成されると同時に、インストール スクリプトの一部としてデータベース内に作成される必要があります。

サニティチェックとして、あなたEXTERNAL_DATA_DIR_PATHはデータベースサーバー上のディレクトリですよね? これは、アプリケーション サーバーまたはクライアント マシン上のパスではありません。

于 2012-04-19T16:56:58.217 に答える