1
可以將String []從存儲過程轉換爲「ORA_MINING_VARCHAR2_NT」作爲返回值嗎? VARRAY是不是一種選擇(我有可變數量的元素)從Java存儲過程將字符串[]轉換爲ORA_MINING_VARCHAR2_NT
我總是得到一個錯誤:
ORA-00932: inconsistent datatypes: expected a return value that is an instance of a user defined Java class convertible to an Oracle type got an object that could not be converted
在此代碼:
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED Parser AS
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
public class Parser {
public static oracle.sql.ARRAY parseToArray(String str, String delim) throws SQLException {
Connection conn = DriverManager.getConnection("jdbc:default:connection");
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("ORA_MINING_VARCHAR2_NT", conn);
ARRAY result = new ARRAY(descriptor, conn, str.split(delim));
return result;
}
}
/
CREATE OR REPLACE FUNCTION
PARSETOARRAY (str IN VARCHAR2, delim IN VARCHAR2)
RETURN ORA_MINING_VARCHAR2_NT AS
LANGUAGE JAVA NAME 'Parser.parseToArray (java.lang.String, java.lang.String) return oracle.sql.ARRAY';
/
DECLARE
v_array ORA_MINING_VARCHAR2_NT;
BEGIN
FOR testing IN (SELECT record FROM interfacelog) LOOP
v_array := PARSETOARRAY(testing.record, '|');
-- do smth
END LOOP;
END;
謝謝!
PS對不起我的英文不好
沒有幫助=( – 2013-03-22 13:15:02
@酷-T - 嘗試'oracle.sql.ARRAY結果=新陣列(...);' – 2013-03-22 13:21:12
不工作已經嘗試過。也許java不能轉換成這種類型,因爲它是一個TABLE type = / – 2013-03-22 13:31:17