首先,我必須道歉,如果這是一個愚蠢的問題,但我是PL/SQL的新手。我應該如何將鍵值傳遞給PL/SQL過程?
我正在開發一個需要與使用java和PL/SQL的Oracle數據庫進行交互的項目。我有一個不確定的鍵值列表,我想將其傳遞給數據庫,我最初的研究似乎指向了oracle.sql.STRUCT和oracle.sql.ARRAY。
我不完全贊成STRUCT和ARRAY對象,因爲它們需要數據庫端的現有對象/表類型。
編輯:在我的Java代碼
java.sql.Connection connection = myGetConnection();
// create variables for the oracle.sql.ARRAY
ArrayDescriptor arraydesc = ArrayDescriptor.createDescriptor("TEXT_TABLE", connection);
Object[] arrayObject = new Object[2];
//create STRUCT objects
StructDescriptor descriptor = StructDescriptor.createDescriptor("MYITEM", connection);
// Loop through the map and put objects in the arrayObject
for(int i = 0; i < myMap.size(); i++){
String key = "key"+1;
String value = "value"+2;
Object[] obj = {key,value};
STRUCT structObj = new STRUCT(descriptor, connection, obj);
// put the struct object in the array object
arrayObject[i] = structObj;
}
// create the oracle.sql.ARRAY
ARRAY array = new ARRAY(arraydesc, connection, arrayObject);
//..
oracleCallableStatement = connection.prepareCall("{call myPackage.myProcedure(?)}");
oracleCallableStatement.setArray(1, array);
oracleCallableStatement.execute();
oracleCallableStatement.close();
,我要在我的oracle數據庫品牌excplictly聲明一個類型的事實
在我的PL/SQL
CREATE OR REPLACE TYPE myItem AS object (c1 VARCHAR2(10), c2 VARCHAR2(30));
CREATE OR REPLACE TYPE text_table AS TABLE OF myItem ;
我認爲必須有一種更簡單的做事方式。這些都是非常原始的對象。
這是正確的方式去做它,這真的是我唯一的選擇?