2017-07-03 8 views
1
callStmt= conn.prepareCall("{call get_id(?,?,?);}"); 
    callStmt.setString(1,"T_CUSTOMER"); 
    callStmt.registerOutParameter(2,Types.VARCHAR); 
    callStmt.setString(3,"GD"); 
    callStmt.execute(); 
    String string = callStmt.getString(2); 
    System.out.println(string); 

をサポートして発生?どのトークンを使用すべきですか?JDBC呼び出し手順、非私はグーグルで検索すると、このエラーが原因で、「{}」の5月に発生した、しかし、どのように私は「{}」なしでOracleプロシージャを呼び出すことができたSQL92

+0

'{call get_id(?、?、?)}'を使用してください) –

答えて

1

中括弧はOracleでは機能しません。それらを取り出して、あなたは行かなくてはなりません。オラクルは伝統的にプレースホルダを使用しています。プレースホルダには、文字 ':'の後に単語が続きます。

callキーワードが気に入らない場合は、 「BEGIN get_id(?、?、?); END;」というキーワードを使用できます。

+0

'{call ..}' JDBCエスケープをサポートするにはJDBCドライバが必要です。私はそれがオラクルのドライバによってサポートされていないことに驚いています。私はすぐに原因がコールエスケープ内の ';'だと思うでしょう。 –

+0

@マークRotteveel ';'それが研究の欠如を意味するので、質問を投票するだろう。 – jeff6times7

関連する問題