1

これは長い間私を困惑させてきたので、私はここでいくつかの助けを得ようとしています:)

JDBCを使用して古いSybaseAdaptiveServer 6に接続しています(!!!)オンラインでJDBCドライバーを見つけることさえできなかったので、インストールディレクトリからコピーしました:)

これで、挿入とクエリ、および残りのすべてのdb操作は正常に機能しますが、ストアドプロシージャを呼び出すときに問題が発生します。まず、コードのスニペットから始めましょう。

CallableStatement loginProcedure = connection.prepareCall("{call Login}");
loginProcedure.executeUpdate();

これは、コードを呼び出す通常の手順です。Loginプロシージャはパラメータを取得せず、何かを出力しません。それが行う唯一のことは、AiColという名前のデータベースにバリバールを作成することです。この投稿もすぐに手順コードで更新します。

上記のコードを実行すると、標準の構文例外が発生します。

com.sybase.jdbc.SybSQLException: ASA Error -131: Syntax error near 'Login'
    at com.sybase.tds.Tds.processEed(Tds.java)
    at com.sybase.tds.Tds.nextResult(Tds.java)
    at com.sybase.jdbc.ResultGetter.nextResult(ResultGetter.java)
    at com.sybase.jdbc.SybStatement.nextResult(SybStatement.java)
    at com.sybase.jdbc.SybStatement.executeLoop(SybStatement.java)
    at com.sybase.jdbc.SybCallableStatement.execute(SybCallableStatement.java)

誰かが以前にこの問題に遭遇しましたか?IN / OUTパラメータのないストアドプロシージャを呼び出すのは初めてなので、何か間違ったことをしている可能性があります:/

前もって感謝します!/ ivo

4

1 に答える 1

0

jConnect のドキュメントからの推測ですが、SybCallableStatement を使用する必要がある場合があります。

デモではパラメーターを使用していますが、executeUpdate で呼び出してみます。

昔は、Sybase の標準 JDBC サポートが不足していて、しばらくの間独自の方法で処理していたことを私は知っています。古い jConnect マニュアルを追跡できるかどうかを確認したい場合があります。

また、jConnect の前に別の Java ライブラリがあったと思っていました。ASE6からお久しぶりです!

import com.sybase.jdbcx.*;

....

// prepare the call for the stored procedure to execute as an RPC

String execRPC = "{call " + procName + " (?, ?)}";
SybCallableStatement scs = (SybCallableStatement) con.prepareCall(execRPC);

// set the values and name the parameters

// also (optional) register for any output parameters
scs.setString(1, "xyz");
scs.setParameterName(1, "@p3");
scs.setInt(2, 123);
scs.setParameterName(2, "@p1");

// execute the RPC
// may also process the results using getResultSet()
// and getMoreResults()

// see the samples for more information on processing results
ResultSet rs = scs.executeQuery();
于 2012-08-13T14:14:22.503 に答える