2012-04-24 15 views
6

Mam tabelę o nazwie pracownik, który ma swój identyfikator, imię i nazwisko, numer telefonu. Używam MySQL jako mojej bazy danych. Używam Java Swing do tego. Szukam tabeli pracownika o nazwie teraz za pomocą Java (użyłem klauzuli like na mojej stronie Java).Czy procedury przechowywane mogą zwracać zestaw wyników?

Teraz muszę zaimplementować tę funkcję w procedurach przechowywanych. Czy to możliwe? I jak możemy wziąć ten zestaw wyników w kodzie Java, jeśli to możliwe?

Teraz Pisałem moje procedury przechowywanej następująco

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

Przykładowy kod będzie mile widziane .. Dzięki

Odpowiedz

0

Tak można. Procedura składowana może nawet zwrócić wiele zestawów wyników.

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

Podczas wykonywania procedury przechowywanej może zwrócić wiele obiektów ResultSet i/lub liczbę aktualizacji, jeśli wykonuje kilka instrukcji.

Używasz CallableStatement, aby wykonać procedurę, a następnie getResultSet() lub getUpdateCount(), aby uzyskać prawidłowy wynik. W przypadku wielu zestawów wyników/instrukcji wywołuje się getMoreResults(), aby przejść przez wyniki zapisanego procesu.

W przypadku prostego przypadku, wystarczy po prostu zadzwonić pod numer getResultSet() i go przetworzyć.

1

Pierwsza rzecz to trzeba napisać procedurę mSQL który wysyła parametr dla LIKE,

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

Następnie z programu java można wykorzystać ten kod do procedury skorzystać,

CallableStatement cstmt = con.prepareCall("{call simpleproc(?)}"); 
cstmt.setString(1, "%su%"); 
ResultSet rs = cstmt.executeQuery(); 
Powiązane problemy