아래와 같이 Stored Procedure를 작성했습니다.
import java.util.Date;
import java.text.SimpleDateFormat;
import java.io.ByteArrayInputStream;
import java.sql.*;
public class SP_Insert
{
public static void InsertData(int sz1, int sz2, int sz3) throws SQLException
{
try
{
String sql = "INSERT INTO TBL_DATA_LOG(FLD_DATE, FLD_DATA_SIZE, FLD_DATA, FLD_SZ1, FLD_SZ2, FLD_SZ3) VALUES (?, ?, ?, ?, ?, ?)";
Class.forName("cubrid.jdbc.driver.CUBRIDDriver");
Connection con = DriverManager.getConnection("jdbc:default:connection:::");
PreparedStatement pstmt = con.prepareStatement(sql);
Date da = new Date();
SimpleDateFormat dt = new SimpleDateFormat("yyyyMMddHHmmss");
String today = dt.format(da);
byte[] cdata = new byte[10];
for(int i=0; i<10; i++)
{
cdata[i] = 0x02;
}
pstmt.setString(1, today);
pstmt.setInt(2, 10);
ByteArrayInputStream bas = new ByteArrayInputStream(cdata, 0, 10);
pstmt.setBinaryStream(3, bas, 10);
pstmt.setInt(4, sz1);
pstmt.setInt(5, sz2);
pstmt.setInt(6, sz3);
pstmt.executeUpdate();
pstmt.close();
con.close();
}
catch(Exception e)
{
System.err.println(e.getMessage());
}
}
}
컴파일후 "loadjava TBL_Test SP_Insert.InsertData" 명령으로 클래스 파일을 로딩했구요.
그리고 아래의 명령으로 등록했습니다.
CREATE PROCEDURE InsertData
(
sz1 integer,
sz2 integer,
sz3 integer
)
as LANGUAGE JAVA
NAME 'SP_Insert.InsertData(int, int, int)';
여기까진 정상적으로 수행되는데
"call InsertData(1, 2, 3);" 명령으로 프로시저를 호출하면 아래와 같은 에러가 발생합니다.
Execute: Methods require an object as their target. call InsertData(2, 3) on 1
원인이 뭘까요?