我有一个关联数组声明,在我尝试调试的过程中,我需要在调试器中初始化数组,但我似乎无法弄清楚正确的初始化字符串。
这是调试器块:
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;
答案 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;)