8

ID、名前、電話番号を持つ従業員という名前のテーブルがあります。MySQL をデータベースとして使用しています。そのためにJava Swingを使用しています。Java を使用して名前の従業員テーブルを検索しています ( likeJava ページで句を使用しました)。

次に、その関数をストアド プロシージャに実装する必要があります。出来ますか?可能であれば、Java コードでその結果セットを取得するにはどうすればよいでしょうか??

今、ストアドプロシージャを次のように記述しました

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

サンプルコードは大歓迎です..ありがとう

4

3 に答える 3

2

LIKE最初に、 のパラメータを送信する msql プロシージャを作成する必要があります。

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

次に、Javaプログラムからこのコードを使用してプロシージャを使用できます。

CallableStatement cstmt = con.prepareCall("{call simpleproc(?)}");
cstmt.setString(1, "%su%");
ResultSet rs = cstmt.executeQuery();
于 2012-04-24T09:47:27.507 に答える
1

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

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

このような単純なケースでは、getResultSet()一度呼び出して処理するだけで済みます。

于 2012-04-24T09:05:50.623 に答える
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
于 2012-04-24T09:03:27.267 に答える