mysql에 stored procedure 만들기
delimiter //
CREATE PROCEDURE getServerId(ip VARCHAR(15), OUT serverId tinyint)
BEGIN
SELECT id INTO serverId FROM tServer WHERE serverIp = ip;
END;
//
delimiter ;
- mysql에서는 ;가 command의 종료를 의미하는데 stored procedure의 경우 여러 query의 조합이라 중간에 ;가 들어갈 수 있는데, 그러면 문법 오류로 간주되므로 delimiter를 임시로 다른 걸로 바꾼 후 sp를 만들고 다시 예전 delimiter로 변경하는 것임.
java에서 call하는 코드
try {
String CLASS_NAME = "com.mysql.jdbc.Driver";
String DB_URL = "jdbc:mysql://localhost:3306/test";
String USR = "id";
String PASSWD = "pw";
Class.forName(CLASS_NAME);
Connection con = DriverManager.getConnection(DB_URL, USR, PASSWD);
CallableStatement stat = conn.prepareCall("call getServerId(?, ?)");
stat.setString(1, "127.0.0.1");
stat.registerOutParameter(2, Types.TINYINT);
stat.execute();
System.out.println(stat.getByte(2));
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
delimiter //
CREATE PROCEDURE getServerId(ip VARCHAR(15), OUT serverId tinyint)
BEGIN
SELECT id INTO serverId FROM tServer WHERE serverIp = ip;
END;
//
delimiter ;
- mysql에서는 ;가 command의 종료를 의미하는데 stored procedure의 경우 여러 query의 조합이라 중간에 ;가 들어갈 수 있는데, 그러면 문법 오류로 간주되므로 delimiter를 임시로 다른 걸로 바꾼 후 sp를 만들고 다시 예전 delimiter로 변경하는 것임.
java에서 call하는 코드
try {
String CLASS_NAME = "com.mysql.jdbc.Driver";
String DB_URL = "jdbc:mysql://localhost:3306/test";
String USR = "id";
String PASSWD = "pw";
Class.forName(CLASS_NAME);
Connection con = DriverManager.getConnection(DB_URL, USR, PASSWD);
CallableStatement stat = conn.prepareCall("call getServerId(?, ?)");
stat.setString(1, "127.0.0.1");
stat.registerOutParameter(2, Types.TINYINT);
stat.execute();
System.out.println(stat.getByte(2));
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
'Database > mysql' 카테고리의 다른 글
window mysql, root 비번 분실시 (1) | 2014.11.28 |
---|---|
mysql에서 stored procedure 만들면서 주의 할 것 (0) | 2007.11.26 |