我将一个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