2012-04-24 39 views
6

私は自分のID、名前、電話番号を持つemployeeという名前のテーブルを持っています。私は自分のデータベースとしてMySQLを使用しています。私はそのためにJava Swingを使用しています。私は従業員の名前をJavaで検索しています(Javaページでlike句を使用しています)。ストアドプロシージャは結果セットを返すことができますか?

私はストアドプロシージャでその機能を実装する必要があります。出来ますか?それが可能ならば、どうすればJavaコードでその結果セットを取得できますか?

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

を次のように私は私のストアドプロシージャを書かれている

は今サンプルコードは、はいすることができます。.. おかげ

答えて

0

を理解されるであろう。ストアドプロシージャは複数の結果セットを返すことさえできます。

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

ストアドプロシージャを実行するとき、実際には複数のResultSetオブジェクトおよび/または更新カウントが複数のステートメントを実行すると返されることがあります。

CallableStatementを使用してプロキシを実行し、次にgetResultSet()またはgetUpdateCount()を使用して正しい結果を得ます。複数の結果セット/ステートメントの場合は、getMoreResults()を呼び出して、ストアドプロシージャの結果を移動します。

このような単純なケースの場合は、getResultSet()を一度呼び出して処理する必要があります。

1

まず最初は、あなたがLIKEのためのパラメータを送信mSQLの手順を書くべきであるあなたが手順を使用するには、このコードを使用することができますJavaプログラムから次に

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

CallableStatement cstmt = con.prepareCall("{call simpleproc(?)}"); 
cstmt.setString(1, "%su%"); 
ResultSet rs = cstmt.executeQuery(); 
関連する問題