0

配列を返す関数があり、値を取得するためにJavaからこの関数を呼び出しています。

PL/SQLコード

create or replace type dates
       is array(10000) of varchar2(32)

働き

CREATE OR REPLACE function datefunc (    
    id1    IN number,
    id2    IN NUMBER    

)
    RETURN dates
AS
    datearray          dates;
    sdate       VARCHAR2 (32);
    edate       VARCHAR2 (32);
BEGIN

Javaコード

     connection = datacon.getConnection();
                    callablestatement = 
    connection.prepareCall("begin ? :=datefunc(?,?,?); end;");
                    callablestatement.registerOutParameter
(1, OracleTypes.ARRAY,"dates");
                    callablestatement.setInt(2, param1);
                    callablestatement.setInt(3, param2);
                    callablestatement.execute();

しかし、コードを実行すると、

java.sql.SQLException: invalid name pattern: schema.dates

この理由は何でしょうか。また、このエラーを解決するにはどうすればよいですか。

ありがとう

4

3 に答える 3

2

大文字にする必要がありました:

callablestatement.registerOutParameter(1, OracleTypes.ARRAY,"DATES");

更新:ああ、私は私が同様の質問を見た場所を見つけました:https ://stackoverflow.com/a/2787880/617455

于 2012-05-29T06:52:54.527 に答える
1

4つのパラメータを定義しました。

connection.prepareCall("begin ? :=datefunc(?,?,?); end;");

ただし、そのうちの3つだけを設定します。

callablestatement.registerOutParameter(1, OracleTypes.ARRAY,"dates");
callablestatement.setInt(2, param1);
callablestatement.setInt(3, param2);
于 2012-05-29T06:54:58.003 に答える
1

私は同じ問題を抱えていましたが、これらの解決策のどれも私のためにうまくいきませんでした。

私が気付いたのは、PL/SQLにいくつかのタイプが欠落していることです。

于 2016-03-04T19:07:59.617 に答える