2

私のタイムゾーンでおやすみなさい。

私はSybase ase 15を使用しています.2つの入力パラメータ両方を持つストアドプロシージャがありますVARCHAR.基本的にストアドプロシージャ内では動的SQLを使用しています.

@cmd = 'select * from TABLE where COL IN'+@PARAM1+'AND COL2=@PARAM2
EXEC(@cmd)

この手順は、次のように JDBC を使用して呼び出します。

CallableStatement stmt = conn.prepareCall("{call MyStoredProcedure(?,?)}");

stmt.setString(1, "'''0'',''1'''");
stmt.setString(2, '''fr''');
stmt.executeQuery();

呼び出しの形式が正しくないことを知らせるエラーがスローされます。

しかし、次のようにIDEで直接呼び出しを実行すると:

EXEC  MyStoredProcedure'''0'',''1'',''2'',''3'',''4'',''5'',''6'',''7''','''fr'''

それは問題なく実行されるので、文字のエスケープに問題があると思います。

誰でもこの問題を経験しましたか?

どうぞよろしくお願いします

前もって感謝します

4

1 に答える 1

0

IN パラメーターと OUT パラメーターを指定しません。

http://docs.oracle.com/javase/tutorial/jdbc/basics/storedprocedures.html

チュートリアルが役立つかどうかを確認してください。

また、パラメーターが 2 つしかないことにもコメントしますが、クエリはそれ以上のように見える文字列を渡します。これは見苦しく、誤解を招きやすく、最初の正規形を破っているように見えます。

于 2013-05-29T23:18:15.267 に答える