0

基になるデータが同じであっても、パラメーターを異なる方法で定義する 2 つのプロシージャが oracle にあります。コードでは、整数として表します。

procedure GetByNum(..., vRegionID in number, ...)
procedure GetByInt(...., vRegionID in integer, ...)

Javaでは常にフィールドを整数として定義します(そしてdbでも)

public Integer getRegionID() {
    return 100;
}

これを(Javaで)integer同じを使用して両方のプロシージャに渡す方法はありOracleTypes.*ますか? カスタムベースラッパーを使用して、org.springframework.jdbc.object.StoredProcedure両方を呼び出します。ストアド プロシージャの変更は現時点では許可されていないため、あとは Java を修正するだけです。

  1. あなたはprocに合格できgetRegionIDますかOracleTypes.NUMBERgetByInt
  2. を期待するOracleTypes.INTEGERに渡すことができますか?getByNumin number
  3. 別の魔法の方法?

これは単純に思えるかもしれませんが、このようにパラメーターを変更することは許可されていないと思います。それが真実ではないことを願っています!

編集:

  • 働いOracleTypes.INTEGERたに渡すために使用するprocedure ... (param in number)
  • これが環境固有のものかどうかはわかりませんが、

不測の問題を心配することなく新しいラッパーの使用を開始できるように、決定的な回答を期待しています。

4

1 に答える 1

1

INTEGERは ANSI 標準型であり、オラクル社ではas のサブタイプとしてNUMBER記述されていますNUMBER(38)。したがって、小数部がない限りINTEGER、パラメーターとして を受け取る場所はどこでも を受け入れる必要があります。NUMBER

于 2012-07-16T13:27:51.617 に答える