검색결과 리스트
글
!markdown
# Java
## JDBC
Version
- JDK1.6
- Oracle 11gR2
### 1. Error (에러)
JDBC로 Oracle의 JAVA객체를 생성하려했는데 에러가 발생했다.
```log
java.sql.SQLException: ORA-29536: 부적합하게 형성된 소스: Encountered "ublic" at line 1, column 90.
Was expecting one of:
"extends" ...
"implements" ...
"{" ...
"<" ...
```
### 2. Problem (문제)
JAVA에서 `{` 이 꼬부랑 괄호(?)를 escape시키지 못하는 것 같다. 역슬래쉬를 앞에 붙여봐도 해결되지 않았다.
### 3. Solved (해결)
Procedure를 이용한 쿼리로 변경한다.
이런 JAVA 객체를 만드려 했다면,
```sql
CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "GenerateUUID" as
import java.sql.*;
import java.io.*;
import java.util.UUID;
public class GenerateUUID {
public static String getId ( ) {
return UUID.randomUUID ( ) .toString ( ) ;
}
}
```
위의 query를 V_SQL_TEXT 변수에 넣는다.
```sql
DECLARE
V_SQL_TEXT CLOB := '${query}';
BEGIN
EXECUTE IMMEDIATE V_SQL_TEXT;
END;
```
그러면 아래와 같은 모습이 된다.
```sql
DECLARE
V_SQL_TEXT CLOB := 'CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "GenerateUUID" as import java.sql.*; import java.io.*; import java.util.UUID; public class GenerateUUID { public static String getId ( ) { return UUID.randomUUID ( ) .toString ( ); } } ';
BEGIN
EXECUTE IMMEDIATE V_SQL_TEXT;
END;
```
이 것을 JDBC로 실행하면 된다.
### 4. Reference (참조)
- Oracle ORA-29536 on DDL-loading java source into the database: [https://stackoverflow.com/questions/43173752/oracle-ora-29536-on-ddl-loading-java-source-into-the-database](https://stackoverflow.com/questions/43173752/oracle-ora-29536-on-ddl-loading-java-source-into-the-database)