1

シンプルな構造を持つJDBC経由でストアドプロシージャを実行しようとしています:

ALTER PROCEDURE test
AS BEGIN
SELECT ...
INSERT ...
END

問題は、挿入が行われないことです。この手順を管理スタジオで実行すると、問題ありません。

String query = "EXEC test";
PreparedStatement st = conn.prepareStatement(query);
st.execute();
ResultSet rs = st.getResultSet(); //result set is correct
int count = st.getUpdateCount(); //returns -1

何か案は?ありがとう

4

3 に答える 3

1

準備済みステートメントの代わりに呼び出し可能なステートメントを使用する必要があります

CallableStatement cstmt = null;
try {
   String SQL = "{call procedureName}";
   cstmt = conn.prepareCall (SQL);
   . . .
}
catch (SQLException e) {
   . . .
}
finally {
   . . .
}
于 2013-11-15T08:41:58.873 に答える
1

クエリの値をに変更してからString query = "{call test()}"、使用できます

CallableStatement cs = connection.prepareCall(クエリ);

cs.execute();

データベース内の変更を表示するには、コミットが必要な場合があります。

conn.commit();

于 2013-11-15T08:42:58.353 に答える
1

これは呼び出しようとしているプロシージャであるため、. を使用する必要がありますCallableStatement

SQL ストアド プロシージャの実行に使用されるインターフェイス。

CallableStatement callableStatement = conn.prepareCall(query);

また、クエリは

String query = "{call test}"; 
// exec is used to execute the procedure from the sql console as such
// To execute a procedure using the java code, use call proc.
于 2013-11-15T08:38:12.370 に答える