Oracle의 일부 변수를 정의하여 응용 프로그램의 데이터베이스 설치 스크립트를 사용하도록 지정해야합니다. 기본적으로 설치 프로그램의 작동 방식은 스크립트 파일을 읽고 Java에서 JDBC를 통해 각 파일을 호출하는 것입니다. 나는 오라클이 데이터베이스 측에서 변수 치환을 할 필요가있다. 프로 시저, 트리거, 구문을 참조 할 필요가있다. ("CREATE TABLE & & MYSCHEMA.TBL_NAME ..."처럼).Java에서 Oracle "DEFINE"호출
private static void testDefineVariables() {
String url = "jdbc:oracle:thin:@localhost:1521:LOCALDEV";
String username = "SYSTEM";
String password = "manager42";
Connection conn = null;
Statement stmt = null;
try {
conn = DriverManager.getConnection(url, username, password);
stmt = conn.createStatement();
//Execute the sql
stmt.execute("DEFINE MYSCHEMA='TESTSCHEMA'");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
try {
if(stmt != null)
stmt.close();
if(conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
오류는 다음과 같습니다 :
java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:194)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1000)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1882)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1847)
at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:301)
내가 오라클을 사용하고
오전 데 문제는 자바 (예)에서 호출 할 때 오류를 던지고 문을 정의하는 것입니다 11g R2 데이터베이스와 ojdbc6-11.2.0.1.0.jar JDBC 드라이버. sqldeveloper 도구와 SQLPlus 콘솔에서 성공적으로 문을 실행할 수 있지만 Java 응용 프로그램에서는 실행할 수 없습니다. 데이터베이스 드라이버에 추가 속성을 구성해야합니까? 이 드라이버에서이 유형의 전화를 걸 수 있습니까?
박쥐가 자바 측에서 변수 바인딩을 사용하는 것이 좋습니다. 그러나 이것은 옵션이 아닙니다. 스크립트는 SQL 인터페이스와 설치 프로그램 모두에서 실행 가능해야합니다. 이것과 별개로 다른 이유가 있습니다.
나는이는 SQL-받는다는 - 플러그인과 함께 작동하도록 바라고 있지만,이 JIRA에 따라 가능하지 않을 수 있습니다Add Oracle SQLPlus syntax for substitution variables
사람이 어떤 제안이있는 경우 또는 방법을 알고 이 기능을 작동 시키려면 크게 감사하겠습니다.
감사합니다. 나는 이것이 사실이라고 느끼는 것을 가졌지 만 나는 확실하지 않았다. – Steve