2012-04-24 12 views
6

Tengo una tabla llamada employee, que tiene su identificación, nombre, número de teléfono. Estoy usando MySQL como mi base de datos. Estoy usando Java Swing para eso. Estoy buscando en la tabla de empleados con el nombre ahora usando Java (he usado la cláusula like en mi página de Java).¿Pueden los procedimientos almacenados devolver un conjunto de resultados?

Ahora necesito implementar esa función en los procedimientos almacenados. ¿Es posible? ¿Y cómo podemos tomar ese conjunto de resultados en código Java, si es posible?

Ahora he escrito mi procedimiento almacenado como sigue

BEGIN 
    SELECT * FROM employee where empName like '%su%' 
END 

código de la muestra será apreciada .. Gracias

Respuesta

0

Sí se puede. Un procedimiento almacenado incluso puede devolver múltiples resultados.

DELIMITER $$ -- recognized by mysql client but not phpmyadmin 

CREATE PROCEDURE prc_test() 
BEGIN 
     SELECT * 
     FROM employee 
     WHERE empName LIKE '%su%'; 
END; 
$$ 

DELIMITER ; 

CALL prc_test(); -- to call 
0

Al ejecutar un procedimiento almacenado, en realidad puede devolver varios objetos ResultSet y/o conteos de actualización si hace varias afirmaciones.

Utiliza CallableStatement para ejecutar el proceso y luego getResultSet() o getUpdateCount() para obtener el resultado correcto. Para conjuntos/declaraciones de resultados múltiples, llame al getMoreResults() para moverse a través de los resultados del proceso almacenado.

Para un caso simple como este solo debe llamar al getResultSet() una vez y procesarlo.

1

Lo primero es que usted debe escribir procedimiento msql que envía parámetro para LIKE,

CREATE PROCEDURE simpleproc (param1 CHAR(20)) 
BEGIN 
SELECT * FROM employee where empName like param1; 
END 

Luego de programa Java puede utilizar este código para utilizar el procedimiento,

CallableStatement cstmt = con.prepareCall("{call simpleproc(?)}"); 
cstmt.setString(1, "%su%"); 
ResultSet rs = cstmt.executeQuery(); 
Cuestiones relacionadas