在Sql Developer调试器中初始化Oracle关联数组

时间:2014-12-04 16:19:15

标签: sql arrays oracle debugging

我有一个关联数组声明,在我尝试调试的过程中,我需要在调试器中初始化数组,但我似乎无法弄清楚正确的初始化字符串。

这是调试器块:

DECLARE
  I_COMPONENTS_ARRAY PKG_CLASSIFICATION_MATRIX.T_NUMBER_ASSOC_ARRAY :=    T_NUMBER_ASSOC_ARRAY('544679','512477');
  I_QUESTION_ID NUMBER;
  I_ANSWER_BOOLEAN NUMBER;
  O_UPDATE_INFO sys_refcursor;
BEGIN
  --Modify the code to initialize the variable
  --I_COMPONENTS_ARRAY := NULL;

  --THESE ARE MY ATTEMPTS AT INITIALIZATION
  --I_COMPONENTS_ARRAY('1') := 544679; 
  --I_COMPONENTS_ARRAY('2') := 512477; 
  --I_COMPONENTS_ARRAY := PKG_CLASSIFICATION_MATRIX.T_NUMBER_ASSOC_ARRAY(544679,512477);

  I_QUESTION_ID := NULL;
  I_ANSWER_BOOLEAN := NULL;

  PKG_CLASSIFICATION_MATRIX.UPDATE_COLUMN(
     I_COMPONENTS_ARRAY => I_COMPONENTS_ARRAY,
     I_QUESTION_ID => I_QUESTION_ID,
     I_ANSWER_BOOLEAN => I_ANSWER_BOOLEAN,
     O_UPDATE_INFO => O_UPDATE_INFO
  );
 /* Legacy output: 
 DBMS_OUTPUT.PUT_LINE('O_UPDATE_INFO = ' || O_UPDATE_INFO);
 */ 
 :O_UPDATE_INFO := O_UPDATE_INFO; --<-- Cursor
 --rollback; 
END;

我做错了什么,或者不能以时尚的方式初始化数组?

以下是包规范中数组的声明:

TYPE T_NUMBER_ASSOC_ARRAY IS TABLE OF NUMBER INDEX BY PLS_INTEGER;

1 个答案:

答案 0 :(得分:1)

试试这个,

declaration of the array in the package spec:
TYPE T_NUMBER_ASSOC_ARRAY IS TABLE OF NUMBER INDEX BY PLS_INTEGER; 

 debugger block:
I_COMPONENTS_ARRAY PKG_CLASSIFICATION_MATRIX.T_NUMBER_ASSOC_ARRAY;

begin
I_COMPONENTS_ARRAY  (1) := 'Value1';
I_COMPONENTS_ARRAY  (2) := 'Value2';
.
.
.
I_COMPONENTS_ARRAY  (n) := 'ValueN';
end;

由于您的数组是由PLS_INTEGER表示的数字索引,因此您无法执行I_COMPONENTS_ARRAY(&#39; 1&#39;)