0
Java 프로그램에서 mysql 커서 값을 가져 오는 방법. 저장 프로 시저에서 mysql 커서 값을 가져 오는 방법
이
이 내 simlpe 자바 프로그램이 위의 저장 프로 시저import java.sql.CallableStatement;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class StoredProcedure {
public static void main(String[] args) {
Connection dbConnection = null;
String url = "jdbc:mysql://localhost:3306/";
String db = "test";
String driver = "com.mysql.jdbc.Driver";
ResultSet rs = null;
CallableStatement callableStatement = null;
String getDBUSERCursorSql = "{call cursor_student}";
try {
Class.forName(driver);
dbConnection = DriverManager.getConnection(url + db, "root", "");
try {
callableStatement = dbConnection.prepareCall(getDBUSERCursorSql);
callableStatement.executeUpdate();
rs = callableStatement.getResultSet();
while (rs.next()) {
System.out.println("sid "+rs.getString(1) +" name "+rs.getString(2));
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
} 위의 자바 프로그램의
출력을 읽기 위해 내 MySQL의 저장 프로 시저
delimiter //
CREATE PROCEDURE cursor_student()
BEGIN
DECLARE row_count INT DEFAULT 0;
DECLARE exit_flag INT DEFAULT 0;
DECLARE sid varchar(30);
DECLARE sname varchar(50);
DECLARE rst CURSOR FOR
SELECT sid, sname FROM student WHERE class = '11th';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET exit_flag=1;
OPEN rst;
fetch_loop: LOOP
FETCH rst INTO sid, sname;
IF exit_flag THEN
LEAVE fetch_loop;
END IF;
SET row_count = row_count +1;
END LOOP;
CLOSE rst;
SELECT 'number of rows fetched =', row_count;
END;
입니다
sid number of rows fetched = name 6
하지만 sid와 sname의 값을 표시하고 싶습니다.
+------+-------+
| sid | sname |
+------+-------+
| 1 | asdf |
| 2 | dff |
| 3 | gggg |
| 4 | tttt |
| 5 | mmmm |
| 6 | .uyy |
+------+-------+
[mysql]로 태그가 붙어있다. 나는 문제가 mysql쪽에 있다고 생각한다. – user000001
@ user000001 자바 코드가 맞다. –
테스트 없이는 말할 수 없습니다. 그러나 출력 결과에 따르면 결과 집합은'SELECT '행 수 fetched =', row_count;의 출력으로 채워져있는 것처럼 보입니다. 이로 인해 문제는 저장 프로 시저에 있다고 믿게됩니다. 나는 틀릴 수 있었다. 내 SQL 지식은 제한되어 있습니다. – user000001