存储过程不会返回任何结果

时间:2012-09-26 23:49:13

标签: java oracle

我将一个Array集合传递给一个Stored过程.Below是存储过程的代码。

CREATE OR REPLACE PROCEDURE R5_QA_126.GIVE_ME_AN_ARRAY( p_list  in TEST_LIST, p_recordset OUT SYS_REFCURSOR)
AS
BEGIN
DBMS_OUTPUT.ENABLE(100);
DBMS_OUTPUT.PUT_LINE('Hi reached before begin');
 OPEN p_recordset FOR
  SELECT words, count
  FROM documents_token
  where words in (select word from table(p_list));
    EXCEPTION
     WHEN NO_DATA_FOUND THEN
       NULL;
     WHEN OTHERS THEN
       -- Consider logging the error and then re-raise
       RAISE;
END GIVE_ME_AN_ARRAY;
/

我有一个声明如下的类型。

CREATE OR REPLACE TYPE TESTREC AS OBJECT
(
  word VARCHAR2(500)
)
/

和表声明如下。

CREATE OR REPLACE TYPE TEST_LIST
AS TABLE OF TESTREC
/

当我尝试调用存储过程时,我遇到了问题。 ps.execute();来自我的java代码。 它不会返回任何结果。

以下是我为数组调用设置的内容。

OracleCallableStatement ps = (OracleCallableStatement) conn
                    .prepareCall("{call GIVE_ME_AN_ARRAY(?,?)}");
            ps.setARRAY(1, array_to_pass);
            ps.registerOutParameter(2, OracleTypes.CURSOR);

请让我知道我在这里做错了什么。 我也正在设置ArrayDescriptor和StructDescriptor

0 个答案:

没有答案