Reference to Uninitialized collection error
Hi ,
I am invoking one wrapper API from Database Adapter in Oracle soa suite 11g . The structure of the wrapper is
1. employee
-->(1..n)employee sites
--->(1..n)employee contacts
I am just trying to invoking API for creation of employee record without sites and contacts and it is throwing me the following error message
-123456 TESTING66 FUEL CONVERSION Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'EMPLOYEEWRAPPER' failed due to: Stored procedure invocation error. Error while trying to prepare and execute the APPS.BPEL_EMPLOYEEWRAPPER.XXWFS_EMPLOYEES_SOA$CREATE_EMP API. An error occurred while preparing and executing the APPS.BPEL_EMPLOYEEWRAPPER.XXWFS_EMPLOYEE_SOA$CREATE_EMP API. Cause: java.sql.SQLException: ORA-06531: Reference to uninitialized collection ORA-06512: at "APPS.BPEL_EMPLOYEEWRAPPER", line 196 ORA-06512: at "APPS.BPEL_EMPLOYEEWRAPPER", line 262 ORA-06512: at line 1 ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. ORA-06531: Reference to uninitialized collection ORA-06512: at "APPS.BPEL_EMPLOYEEWRAPPER", line 196 ORA-06512: at "APPS.BPEL_EMPLOYEEWRAPPER", line 262 ORA-06512: at line 1 6531
passing site and contact details are not mandatory one
But when i am passing the employeesite and employee contact then it is not throwing this error message and the big strange thing is it is perfectly working when calling in sql prompt.
Please help me...
Thanks,
1..n means the elements needs to be in the payload itself when calling the db adapter
so skipping the elements isn't an option.
the smallest payload you can use should be something like
<employee>
<employee sites/>
<employee contacts/>
</employee>
Similar Messages
-
Error report: ORA-06531: Reference to uninitialized collection
I have Procedure like this
declare
CURSOR lcu_emp
IS
(SELECT *
FROM
emp);
ln_count PLS_INTEGER := 1;
TYPE emp_TBL_TYPE
IS
TABLE OF LCU_emp%ROWTYPE;
LT_emp emp_TBL_TYPE;
begin
FOR Lr_EMP IN LCU_EMP
LOOP
ln_count :=1;
Lr_EMP.EMP_NO:='1234'; -- updating the loop variable ... just for eg its 1234
--Transferring the loop variable to collection
lt_PREV_ASSIGN(ln_count):= Lr_PREV_ASSIGN; -- THis line its errorring it as Error report: ORA-06531: Reference to uninitialized collection
END LOOP;
FOR lr_emp IN lt_emp.FIRST..lt_emp.LAST
LOOP
-- printing records when LT_emp (lr_emp ).emp_no = 1234;
END LOOP;
end;Please help how to assign cursor record to collection...
Thanks
Vinoth.The realtime procedure is below... i thought it will be easy for u guys to understand
PROCEDURE MAIN(
P_ERRBUFF OUT VARCHAR2,
P_RETCODE OUT NUMBER,
P_BUSINESS_GROUP_ID IN NUMBER,
P_EFFECTIVE_DATE IN VARCHAR2,
p_debug_flag IN VARCHAR2 )
AS
LN_ELEMENT_LINK_ID pay_element_links_f.element_link_id%TYPE;
LN_INPUT_VALUE_ID1 pay_input_values_f.input_value_id%TYPE;
LN_INPUT_VALUE_ID2 pay_input_values_f.input_value_id%TYPE;
ld_effective_start_date pay_element_entries_f.effective_start_date%TYPE;
LD_EFFECTIVE_END_DATE PAY_ELEMENT_ENTRIES_F.EFFECTIVE_END_DATE%TYPE;
LN_ELEMENT_ENTRY_ID PAY_ELEMENT_ENTRIES_F.ELEMENT_ENTRY_ID%TYPE;
ln_object_version_number pay_element_entries_f.object_version_number%TYPE;
lc_create_warning BOOLEAN;
CURSOR lcu_prev_assign
IS
(SELECT *
FROM
(SELECT P_PAAF.ASSIGNMENT_ID PREV_ASSIGNMENT_ID,
C_PAAF.ASSIGNMENT_ID CURR_ASSIGNMENT_ID,
PAP.ACCRUAL_PLAN_NAME ACCRUAL_PLAN_NAME,
APPS.PER_UTILITY_FUNCTIONS.GET_NET_ACCRUAL ( P_PAAF.ASSIGNMENT_ID, P_PAAF.PAYROLL_ID , P_PAAF.BUSINESS_GROUP_ID, -1 , TRUNC(XPPOS.PREV_ACTUAL_TERMINATION_DATE) , PAP.ACCRUAL_PLAN_ID) NET_ACCRUAL,
XPPOS.PERIOD_OF_SERVICE_ID,
XPPOS.PERSON_ID,
XPPOS.CURRENT_DATE_START ,
XPPOS.PREVIOUS_DATE_START,
XPPOS.CURR_ACTUAL_TERMINATION_DATE,
XPPOS.PREV_ACTUAL_TERMINATION_DATE ,
XPPOS.PREV_LSP_DATE PREV_LSP_DATE,
P_PAAF.BUSINESS_GROUP_ID PREV_BG_ID ,
c_paaf.business_group_id curr_bg_id ,
'N' NEW_ASSIGNMENT_ELEIGIBLE ,
NULL PTO_ELIGBLE_DATE,
NULL status,
NULL ERROR_MESSAGE,
NULL PREV_ASS_ELEMENT_ENTRY_ID,
null curr_ass_element_entry_id
FROM
(SELECT PERIOD_OF_SERVICE_ID,
PERSON_ID,
DATE_START CURRENT_DATE_START,
LEAD(DATE_START,1,NULL) OVER(PARTITION BY PERSON_ID ORDER BY DMY_ORDER) PREVIOUS_DATE_START,
ACTUAL_TERMINATION_DATE CURR_ACTUAL_TERMINATION_DATE,
LEAD(ACTUAL_TERMINATION_DATE,1,NULL) OVER(PARTITION BY PERSON_ID ORDER BY DMY_ORDER) PREV_ACTUAL_TERMINATION_DATE,
lead(last_standard_process_date ,1,NULL) over(PARTITION BY person_id ORDER BY DMY_ORDER) prev_lsp_date,
row_number() over (PARTITION BY person_id ORDER BY date_start DESC) DMY_SLCT
FROM
(SELECT period_of_service_id ,
PERSON_ID ,
DATE_START,
ACTUAL_TERMINATION_DATE,
last_standard_process_date,
COUNT(PERSON_ID) OVER (PARTITION BY PERSON_ID) "CNT",
row_number() over (PARTITION BY person_id ORDER BY date_start DESC) "DMY_ORDER"
FROM PER_PERIODS_OF_SERVICE PPOS
WHERE CNT >=2
AND DMY_ORDER IN (1,2)
) XPPOS,
PER_ALL_ASSIGNMENTS_F C_PAAF ,
PER_ALL_ASSIGNMENTS_F P_PAAF,
PAY_ELEMENT_ENTRIES_F P_PEEF,
PAY_ACCRUAL_PLANS PAP,
PER_PERSON_TYPE_USAGES_F P_PPTUF,
PER_PERSON_TYPES P_PPT
WHERE XPPOS.DMY_SLCT =1
AND C_PAAF.PERSON_ID = XPPOS.PERSON_ID
AND TRUNC(CURRENT_DATE_START) BETWEEN C_PAAF.EFFECTIVE_START_DATE AND C_PAAF.EFFECTIVE_END_DATE
AND C_PAAF.PRIMARY_FLAG = 'Y'
AND P_PAAF.PERSON_ID = XPPOS.PERSON_ID
AND TRUNC(prev_actual_termination_date) BETWEEN P_PAAF.EFFECTIVE_START_DATE AND P_PAAF.EFFECTIVE_END_DATE
AND P_PAAF.PRIMARY_FLAG = 'Y'
AND P_PEEF.ASSIGNMENT_ID = P_PAAF.ASSIGNMENT_ID
AND TRUNC(PREV_ACTUAL_TERMINATION_DATE) BETWEEN P_PEEF.EFFECTIVE_START_DATE AND P_PEEF.EFFECTIVE_END_DATE
AND PAP.ACCRUAL_PLAN_ELEMENT_TYPE_ID = P_PEEF.ELEMENT_TYPE_ID
AND C_PAAF.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
AND TRUNC(PREV_ACTUAL_TERMINATION_DATE) BETWEEN P_PPTUF.EFFECTIVE_START_DATE AND P_PPTUF.EFFECTIVE_END_DATE
AND P_PPTUF.PERSON_ID = P_PAAF.PERSON_ID
AND P_PPTUF.PERSON_TYPE_ID = P_PPT.PERSON_TYPE_ID
AND P_PPT.SYSTEM_PERSON_TYPE IN ('EMP', 'EMP_APL')
AND P_PAAF.EMPLOYMENT_CATEGORY IN ('LOCAL' , 'FR')
AND C_PAAF.ASSIGNMENT_ID = 83528
AND APPS.PER_UTILITY_FUNCTIONS.GET_NET_ACCRUAL ( P_PAAF.ASSIGNMENT_ID, P_PAAF.PAYROLL_ID , P_PAAF.BUSINESS_GROUP_ID, -1 , TRUNC(XPPOS.PREV_ACTUAL_TERMINATION_DATE) , PAP.ACCRUAL_PLAN_ID) <> 0
ORDER BY NEW_ASSIGNMENT_ELEIGIBLE
CURSOR LCU_PTO_ELGIBLE(P_ASSIGNMENT_ID NUMBER , P_PLAN_NAME VARCHAR2 , P_EFF_DATE DATE)
IS
(SELECT MIN(peef.EFFECTIVE_START_DATE) pto_eligble_date
FROM PAY_ELEMENT_ENTRIES_F PEEF,
PAY_ELEMENT_TYPES_F PETF
WHERE PEEF.ASSIGNMENT_ID = P_ASSIGNMENT_ID
AND PETF.element_NAME = P_PLAN_NAME
AND TRUNC(p_eff_date) BETWEEN petf.effective_start_date AND petf.effective_end_date
CURSOR LCU_ELEMENT_LINK(p_plan_name VARCHAR2,p_eff_date DATE)
IS
(SELECT PIVF1.INPUT_VALUE_ID INPUT_VALUE_ID1,
PIVF2.INPUT_VALUE_ID INPUT_VALUE_ID2,
PELF.ELEMENT_LINK_ID
FROM PAY_ELEMENT_LINKS_F PELF ,
PAY_ELEMENT_TYPES_F PETF,
pay_input_values_f pivf1 ,
pay_input_values_f pivf2
WHERE PELF.ELEMENT_TYPE_ID = PETF.ELEMENT_TYPE_ID
AND PIVF1.ELEMENT_TYPE_ID = PETF.ELEMENT_TYPE_ID
AND PIVF2.ELEMENT_TYPE_ID = PETF.ELEMENT_TYPE_ID
AND TRUNC(P_EFF_DATE) BETWEEN PELF.EFFECTIVE_START_DATE AND PELF.EFFECTIVE_END_DATE
AND TRUNC(P_EFF_DATE) BETWEEN PETF.EFFECTIVE_START_DATE AND PETF.EFFECTIVE_END_DATE
AND TRUNC(P_EFF_DATE) BETWEEN PIVF1.EFFECTIVE_START_DATE AND PIVF1.EFFECTIVE_END_DATE
AND TRUNC(p_eff_date) BETWEEN pivf2.effective_start_date AND pivf2.effective_end_date
AND ELEMENT_NAME = p_plan_name
||' RollOver Adj'
AND PIVF2.NAME = 'Hours'
AND PIVF1.NAME = 'Effective Date'
AND petf.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
ln_count PLS_INTEGER := 1;
TYPE PREV_ASSIGN_TBL_TYPE
IS
TABLE OF LCU_PREV_ASSIGN%ROWTYPE;
LT_PREV_ASSIGN PREV_ASSIGN_TBL_TYPE;
--LR_PREV_ASSIGN LCU_PREV_ASSIGN%ROWTYPE;
--Lb_PREV_ASSIGN LCU_PREV_ASSIGN%ROWTYPE;
BEGIN
FOR Lr_PREV_ASSIGN IN LCU_PREV_ASSIGN
LOOP
ln_count :=1;
LN_ELEMENT_LINK_ID := NULL;
LN_INPUT_VALUE_ID1 := NULL;
LN_INPUT_VALUE_ID2 := NULL;
FOR LRU_ELEMENT_LINK IN LCU_ELEMENT_LINK (Lr_PREV_ASSIGN.ACCRUAL_PLAN_NAME,LR_PREV_ASSIGN.PREV_LSP_DATE )
LOOP
LN_ELEMENT_LINK_ID :=LRU_ELEMENT_LINK.ELEMENT_LINK_ID;
LN_INPUT_VALUE_ID1 := LRU_ELEMENT_LINK.input_value_id1;
LN_INPUT_VALUE_ID2 := LRU_ELEMENT_LINK.INPUT_VALUE_ID2;
BEGIN
apps.pay_element_entry_api.create_element_entry ( P_EFFECTIVE_DATE => LR_PREV_ASSIGN.PREV_LSP_DATE, P_BUSINESS_GROUP_ID => LR_PREV_ASSIGN.PREV_BG_ID ,p_assignment_id => Lr_PREV_ASSIGN.prev_assignment_id ,p_element_link_id => ln_element_link_id ,p_entry_type => 'E'
--,p_creator_type => 'F'
--,p_cost_allocation_keyflex_id => cost_keyflex_id
--,p_date_earned => l_week_ending_date
,p_input_value_id1 => LN_INPUT_VALUE_ID1 ,p_input_value_id2 => LN_INPUT_VALUE_ID2
--,p_input_value_id3 => l_inp_value3_id
--,p_input_value_id4 => l_inp_value4_id
,P_ENTRY_VALUE1 => LR_PREV_ASSIGN.PREV_ACTUAL_TERMINATION_DATE ,p_entry_value2 => (-1)* LR_PREV_ASSIGN.net_accrual
--,p_entry_value3 => l_constant_all_deductions
--,p_entry_value4 => l_constant_no
,p_effective_start_date => ld_effective_start_date ,p_effective_end_date => ld_effective_end_date ,p_element_entry_id => ln_element_entry_id ,p_object_version_number => ln_object_version_number ,P_CREATE_WARNING => LC_CREATE_WARNING );
LR_PREV_ASSIGN.STATUS :='P';
Lr_PREV_ASSIGN.prev_ass_element_entry_id := ln_element_entry_id;
EXCEPTION
WHEN OTHERS THEN
LR_PREV_ASSIGN.STATUS :='E';
Lr_PREV_ASSIGN.error_message := SQLERRM;
END;
END LOOP;
FOR LR_PTO_ELGIBLE IN LCU_PTO_ELGIBLE(LR_PREV_ASSIGN.CURR_ASSIGNMENT_ID ,LR_PREV_ASSIGN.ACCRUAL_PLAN_NAME , LR_PREV_ASSIGN.CURRENT_DATE_START )
LOOP
LR_PREV_ASSIGN.NEW_ASSIGNMENT_ELEIGIBLE := 'Y';
LR_PREV_ASSIGN.pto_eligble_date := LR_PTO_ELGIBLE.pto_eligble_date ;
END LOOP;
IF(LR_PREV_ASSIGN.STATUS = 'P')
then
BEGIN
apps.pay_element_entry_api.create_element_entry (
P_EFFECTIVE_DATE => LR_PREV_ASSIGN.pto_eligble_date ,
P_BUSINESS_GROUP_ID => LR_PREV_ASSIGN.CURR_BG_ID ,
P_ASSIGNMENT_ID => LR_PREV_ASSIGN.CURR_ASSIGNMENT_ID ,
P_ELEMENT_LINK_ID => LN_ELEMENT_LINK_ID ,
p_entry_type => 'E'
--,p_creator_type => 'F'
--,p_cost_allocation_keyflex_id => cost_keyflex_id
--,p_date_earned => l_week_ending_date
,P_INPUT_VALUE_ID1 => LN_INPUT_VALUE_ID1
,p_input_value_id2 => LN_INPUT_VALUE_ID2
--,p_input_value_id3 => l_inp_value3_id
--,p_input_value_id4 => l_inp_value4_id
,P_ENTRY_VALUE1 => LR_PREV_ASSIGN.PTO_ELIGBLE_DATE ,
p_entry_value2 => LR_PREV_ASSIGN.net_accrual
--,p_entry_value3 => l_constant_all_deductions
--,p_entry_value4 => l_constant_no
,P_EFFECTIVE_START_DATE => LD_EFFECTIVE_START_DATE ,
P_EFFECTIVE_END_DATE => LD_EFFECTIVE_END_DATE ,
P_ELEMENT_ENTRY_ID => LN_ELEMENT_ENTRY_ID ,
P_OBJECT_VERSION_NUMBER => LN_OBJECT_VERSION_NUMBER ,
P_CREATE_WARNING => LC_CREATE_WARNING );
LR_PREV_ASSIGN.STATUS :='S';
LR_PREV_ASSIGN.CURR_ASS_ELEMENT_ENTRY_ID := LN_ELEMENT_ENTRY_ID;
commit;
EXCEPTION
WHEN OTHERS THEN
rollback;
LR_PREV_ASSIGN.STATUS :='E';
LR_PREV_ASSIGN.ERROR_MESSAGE := SQLERRM;
END;
END IF;
lt_PREV_ASSIGN(ln_count):= Lr_PREV_ASSIGN;
ln_count:=ln_count+1;
END LOOP;
FOR lr_prev_assign IN lt_prev_assign.FIRST..lt_prev_assign.LAST
LOOP
IF(lt_prev_assign(lr_prev_assign).status = 'E')
THEN
FND_FILE.PUT_LINE(FND_FILE.LOG,lt_prev_assign(lr_prev_assign).error_message);
end if;
--print the error records here
END LOOP;
END MAIN; -
Reference to uninitialized collection
Hi,
I have created a Java stored procedure as follows:
Type declaration:
CREATE OR REPLACE TYPE transArray AS TABLE OF NUMBER(20)
/Stored Java Class:
CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED testCompTrans AS
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;
import java.util.GregorianCalendar;
import java.text.SimpleDateFormat;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
public class testCompTrans {
public static void callCompTrans(oracle.sql.ARRAY[] returnCompTrans, int memId, int month,
int year, int freq, int empWrkgDays, BigDecimal baseSalary, BigDecimal agreedCurrRate,
String paycycle, String cutoff, String companyCode, String payCurrCode, Date dateJoined){
int arrayLength = 2;
BigDecimal[] trans = new BigDecimal[arrayLength];
BigDecimal rate = new BigDecimal("0");
try{
prorate = compProrate(memId, month, year, freq, empWrkgDays, baseSalary, agreedCurrRate, paycycle,
cutoff, companyCode, payCurrCode, dateJoined);
for(int i=0;i<arrayLength;i++){
rate = trans;
System.out.println(rate);
Connection conn = DriverManager.getConnection("jdbc:default:connection:");
ArrayDescriptor desc = ArrayDescriptor.createDescriptor("transArray",conn);
returnCompTrans[0] = new ARRAY(desc,conn,prorate);
}catch (Exception e){
e.printStackTrace();
}Stored procedure: (from a package)PROCEDURE SP_COMPTRANS(returnCompTrans OUT transArray, memId IN NUMBER, payMonth IN NUMBER, payYear IN NUMBER, freq IN NUMBER,
empWrkgDays IN NUMBER, baseSalary IN NUMBER, agreedCurrRate IN NUMBER, paycycle IN VARCHAR2, cutOff IN VARCHAR2,
companyCode IN VARCHAR2, payCurrCode IN VARCHAR2, dateJoined IN DATE)
AS LANGUAGE JAVA
NAME 'ori.payroll.OriCompProrate.callCompProrate(oracle.sql.ARRAY[], int, int, int, int, int, java.math.BigDecimal, java.math.BigDecimal, java.lang.String, java.lang.String,
java.lang.String, java.lang.String, java.util.Date)';
I have another stored procedure which will call and process this for each employee - SP_PAYRUN. I just added this:
Initialization:CREATE OR REPLACE PROCEDURE SP_PAYRUN(EMP_FROM VARCHAR2, EMP_TO VARCHAR2, PAY_YEAR NUMBER, PAY_MONTH NUMBER)
AS
ARRAYTRANS testArray := testArray(); .....
PG_PAY_RUN.SP_COMPTRANS(ARRAYTRANS, MEMID, PAY_MONTH, PAY_YEAR, FREQ, MTH_WRKG_DAYS, BASE_SALARY, AGREED_CURR_RATE,
PAYCYCLE, 'PY', COMP_CODE, PAY_CURR_CODE, JOINED_DATE);
--I just added this to check the result:
BASE_SALARY := ARRAYTRANS(1);
DBMS_OUTPUT.PUT_LINE(BASE_SALARY);Then, executed the SP_PAYRUN in SQL* Plus:set serveroutput on size 20000
execute SP_PAYRUN('2345', '29708161', 2008, 1);this outputs the base_salary but only after 3 or 4 employees and then I get this error:
BEGIN SP_PAYROLLRUN('2345', '29708161', 2008, 1); END;
ERROR at line 1:
ORA-06531: Reference to uninitialized collection
ORA-06512: at "SP_PAYRUN", line 270
ORA-06512: at line 1
I have tried testing my java stored procedure with only one employee and it worked.
The stored procedure should return 21 employees. What could be the problem with this? Thanks in advance.Hi,
thanks for your reply. I've also visited this link and already added above the solution it gave:
I have another stored procedure which will call and process this for each employee - SP_PAYRUN. I just added this:
Initialization:
CREATE OR REPLACE PROCEDURE SP_PAYRUN(EMP_FROM VARCHAR2, EMP_TO VARCHAR2, PAY_YEAR NUMBER, PAY_MONTH NUMBER)
AS
ARRAYTRANS testArray := testArray(); The procedure returns something but not all. I was expecting 21 data but it only returned the first 3 or 4 or sometimes 5.. -
ORA-06531 reference to uninitialized collection in oracle 6i form
Hello,
I am importing data from excel to database table with column mapping (oracle 6i forms)using ole2 package, then calling package
which is having a procedure. while executing the package procedure,
I am getting error 'ora-06531 reference to uninitialized collection' i.e. before for i in 1..in_lData.count
I am working on it but still not getting any solution. There is no problem in coding my form gets compiled but at run time i am getting this error.
And while debugging, data fetched from ole2 package is not passed to for loop of the procedure.
(first of all i am calling ole 2 package, then from ole2 package i am calling my package. procedure)
please help me. My code is this
------------------------------------------------------Ole 2 Package begins-----------------------------------------------------------------
PROCEDURE get_excel IS
APPLICATION OLE2.OBJ_TYPE;
WORKBOOKS OLE2.OBJ_TYPE;
WORKBOOK OLE2.OBJ_TYPE;
WORKSHEETS OLE2.OBJ_TYPE;
WORKSHEET OLE2.OBJ_TYPE;
CELL OLE2.OBJ_TYPE;
CTR NUMBER(12);
COLS NUMBER(2);
CELLVALUE VARCHAR2(89);
C_ROUTE VARCHAR2(255);
V_ROUTE VARCHAR2(1000);
C_TRNDATE VARCHAR2(255);
V_TRNDATE VARCHAR2(1000);
C_TTIME VARCHAR2(255);
V_TTIME VARCHAR2(1000);
C_TID VARCHAR2(255);
V_TID VARCHAR2(1000);
FILENAME VARCHAR2(500);
v_path varchar2(1000):=:path;
ARGS OLE2.OBJ_TYPE;
tDataList PK_EXCEL_TO_DB.tDataList;
BEGIN
:progress:='Please wait...';
SYNCHRONIZE;
--------------INITIATE EXCEL APPLICATION---------------------------
filename := V_PATH;--GET_FILE_NAME('c:\', File_Filter=>'Excel Files (*.xls)|*.xls|'); -- to pick the file
APPLICATION := OLE2.CREATE_OBJ('EXCEL.APPLICATION');
OLE2.SET_PROPERTY(APPLICATION,'VISIBLE','FALSE');
----------------GET WORKBOOKS FROM EXCEL APPLICATION---------------
WORKBOOKS := OLE2.GET_OBJ_PROPERTY(APPLICATION, 'WORKBOOKS');
----------------OPEN REQUIRED WORKBOOK-----------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS, FILENAME);
WORKBOOK := OLE2.GET_OBJ_PROPERTY(WORKBOOKS,'OPEN',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
----------------OPEN REQUIRED WORKSHEET---------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,'Sheet1');
WORKSHEET := OLE2.GET_OBJ_PROPERTY (WORKBOOK,'WORKSHEETS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
----------------GET CELL VALUE-------------------------------------
ctr := 2; --row number
cols := 1; -- column number
FIRST_RECORD;
LOOP
-----------------------COLUMN1-------------------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,COLS); --COLS
OLE2.ADD_ARG(ARGS,1);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
C_ROUTE := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,CTR);
OLE2.ADD_ARG(ARGS,1);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
V_ROUTE := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
-----------------------COLUMN2-------------------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,COLS);
OLE2.ADD_ARG(ARGS,2);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
C_TRNDATE:= OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,CTR);
OLE2.ADD_ARG(ARGS,2);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
V_TRNDATE:= OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
-----------------------COLUMN3-------------------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,COLS);
OLE2.ADD_ARG(ARGS,3);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
C_TTIME := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,CTR);
OLE2.ADD_ARG(ARGS,3);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
V_TTIME := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
-----------------------COLUMN4-------------------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,COLS);
OLE2.ADD_ARG(ARGS,4);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
C_TID := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,CTR);
OLE2.ADD_ARG(ARGS,4);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
V_TID := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
PK_EXCEL_TO_DB.PR_DO_INSERT(tDataList);
EXIT WHEN length(V_Route) = 0 or length(V_Route) is null;
ctr := ctr + 1;
cols := 1;
i_ldata := PK_EXCEL_TO_DB.tDatalist(); --already define
PK_EXCEL_TO_DB.PR_DO_INSERT(tDataList);
END LOOP;
:progress:='EXCEL READING IS DONE...';
----------------CLOSE THE EXCEL SHEET AFTER READING--------------
OLE2.INVOKE(APPLICATION,'QUIT');
-----------------RELEASE ALL OBJECTS
OLE2.RELEASE_OBJ(CELL);
OLE2.RELEASE_OBJ(WORKSHEET);
OLE2.RELEASE_OBJ(WORKBOOK);
OLE2.RELEASE_OBJ(WORKBOOKS);
OLE2.RELEASE_OBJ(APPLICATION);
:PROGRESS := 'DATA INSERTED INTO THE TABLE '; SYNCHRONIZE;
SYNCHRONIZE;
exception
WHEN OTHERS THEN
MESSAGE(sqlerrm);
END;
----------------------------------------------------------------------------------------OLE2 PACKAGE ENDS-------------------------------------------------
------------------------------------------------------------PK_EXCEL_TO_DB PACKAGE SPECIFICATION---------------------------------------------
PACKAGE PK_EXCEL_TO_DB IS
TYPE tKeyValue IS RECORD (
CROUTE VARCHAR2(255),
VROUTE VARCHAR2(1000),
CTRNDATE VARCHAR2(255),
VTRNDATE VARCHAR2(1000),
CTTIME VARCHAR2(255),
VTTIME VARCHAR2(1000),
CTID VARCHAR2(255),
VTID VARCHAR2(1000));
TYPE tDataList IS TABLE OF tKeyValue;
PROCEDURE PR_DO_INSERT(i_lData IN tDataList);
END;
-----------------------------------------------------------------PK_EXCEL_TO_DB PACKAGE BODY-----------------------------------------------------
PACKAGE BODY PK_EXCEL_TO_DB IS
PROCEDURE PR_DO_INSERT(i_lData IN tDataList) IS
CC_ROUTE VARCHAR2(255);
VV_ROUTE VARCHAR2(1000);
CC_TRNDATE VARCHAR2(255);
VV_TRNDATE VARCHAR2(1000);
CC_TTIME VARCHAR2(255);
VV_TTIME VARCHAR2(1000);
CC_TID VARCHAR2(255);
VV_TID VARCHAR2(1000);
BEGIN
FOR i IN 1..i_lData.count
LOOP
CC_ROUTE:=CC_ROUTE || ',' || i_ldata(i).CROUTE;
VV_ROUTE:=VV_ROUTE|| ',''' || i_ldata(i).VROUTE || '''';
CC_TRNDATE :=CC_TRNDATE || ',' || i_ldata(i).CTRNDATE ;
VV_TRNDATE :=VV_TRNDATE || ',''' || i_ldata(i).VTRNDATE || '''';
CC_TTIME :=CC_TTIME || ',' || i_ldata(i).CTTIME ;
VV_TTIME :=VV_TTIME || ',''' || i_ldata(i).VTTIME || '''';
CC_TID :=CC_TID || ',' || i_ldata(i).CTID ;
VV_TID :=VV_TID || ',''' || i_ldata(i).VTID|| '''';
END LOOP;
--EXECUTE IMMEDIATE
FORMS_DDL('INSERT INTO TEMP2 (' || SUBSTR(CC_ROUTE, 2) || ' ' ||
SUBSTR(CC_TRNDATE, 2) || ' ' ||
SUBSTR(CC_TTIME, 2) || '' ||
SUBSTR(CC_TID, 2) || ')
VALUES (' || SUBSTR(VV_ROUTE,2) || ' ' ||
SUBSTR(VV_TRNDATE,2) || '' ||
SUBSTR(VV_TTIME,2) || ' ' ||
SUBSTR(VV_TID,2)|| ')');
commit;
END;
END;
------------------------------------------------------------------------PK_EXCEL_TO_DB PACKAGE BODY ENDS--------------------------------------
Thank You
Sameer.Hii Andreas Weiden,
Sorry for replying late. I am very thankful to Francois and your for your suggestion. I've gone through the documentation of collection and finally i got the solution.
But I am unable to insert rercord to the table. Values are passed to the procedure, i am able to see the values while debugging and i get the message
'DATA INSERTED INTO THE TABLE' but when i check it with sql, the table is empty. I've tried commit and standard.commit, but it doesn't works. My modified code is given below.
PROCEDURE get_excel IS
APPLICATION OLE2.OBJ_TYPE;
WORKBOOKS OLE2.OBJ_TYPE;
WORKBOOK OLE2.OBJ_TYPE;
WORKSHEETS OLE2.OBJ_TYPE;
WORKSHEET OLE2.OBJ_TYPE;
CELL OLE2.OBJ_TYPE;
CTR NUMBER(12);
COLS NUMBER(2);
CELLVALUE VARCHAR2(89);
C_ROUTE VARCHAR2(255);
V_ROUTE VARCHAR2(1000);
C_TRNDATE VARCHAR2(255);
V_TRNDATE VARCHAR2(1000);
C_TTIME VARCHAR2(255);
V_TTIME VARCHAR2(1000);
C_TID VARCHAR2(255);
V_TID VARCHAR2(1000);
FILENAME VARCHAR2(500);
v_path varchar2(1000):=:path;
ARGS OLE2.OBJ_TYPE;
i_ldata PK_EXCEL_TO_DB.tDataList:=PK_EXCEL_TO_DB.tDataList();
tDataList PK_EXCEL_TO_DB.tDataList;
BEGIN
:progress:='Please wait...';
SYNCHRONIZE;
--------------INITIATE EXCEL APPLICATION---------------------------
filename := V_PATH;--GET_FILE_NAME('c:\', File_Filter=>'Excel Files (*.xls)|*.xls|'); -- to pick the file
APPLICATION := OLE2.CREATE_OBJ('EXCEL.APPLICATION');
OLE2.SET_PROPERTY(APPLICATION,'VISIBLE','FALSE');
----------------GET WORKBOOKS FROM EXCEL APPLICATION---------------
WORKBOOKS := OLE2.GET_OBJ_PROPERTY(APPLICATION, 'WORKBOOKS');
----------------OPEN REQUIRED WORKBOOK-----------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS, FILENAME);
WORKBOOK := OLE2.GET_OBJ_PROPERTY(WORKBOOKS,'OPEN',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
----------------OPEN REQUIRED WORKSHEET---------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,'Sheet1');
WORKSHEET := OLE2.GET_OBJ_PROPERTY (WORKBOOK,'WORKSHEETS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
----------------GET CELL VALUE-------------------------------------
ctr := 2; --row number
cols := 1; -- column number
FIRST_RECORD;
LOOP
i_ldata.extend(ctr);
i_ldata.extend(cols);
--tDataList:=PK_EXCEL_TO_DB.tDataList();
-----------------------COLUMN1-------------------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,COLS); --COLS
OLE2.ADD_ARG(ARGS,1);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
C_ROUTE := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
i_ldata(cols).CROUTE:=C_ROUTE;
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,CTR);
OLE2.ADD_ARG(ARGS,1);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
V_ROUTE := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
i_ldata(ctr).VROUTE:=V_ROUTE;
-----------------------COLUMN2-------------------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,COLS);
OLE2.ADD_ARG(ARGS,2);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
C_TRNDATE:= OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
i_ldata(cols).CTRNDATE:=C_TRNDATE;
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,CTR);
OLE2.ADD_ARG(ARGS,2);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
V_TRNDATE:= OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
i_ldata(ctr).vtrndate:=v_trndate;
-----------------------COLUMN3-------------------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,COLS);
OLE2.ADD_ARG(ARGS,3);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
C_TTIME := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
i_ldata(cols).CTTIME:=C_TTIME;
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,CTR);
OLE2.ADD_ARG(ARGS,3);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
V_TTIME := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
i_ldata(ctr).vttime:=v_ttime;
-----------------------COLUMN4-------------------------------------
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,COLS);
OLE2.ADD_ARG(ARGS,4);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
C_TID := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
i_ldata(cols).CTID:=C_TID;
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ARGS,CTR);
OLE2.ADD_ARG(ARGS,4);
CELL := OLE2.GET_OBJ_PROPERTY(WORKSHEET,'CELLS',ARGS);
OLE2.DESTROY_ARGLIST(ARGS);
ARGS := OLE2.CREATE_ARGLIST;
V_TID := OLE2.GET_CHAR_PROPERTY(CELL,'TEXT');
i_ldata(ctr).vtid:=v_tid;
PK_EXCEL_TO_DB.PR_DO_INSERT(i_ldata);
-- i_ldata := PK_EXCEL_TO_DB.tDatalist();
EXIT WHEN length(V_Route) = 0 or length(V_Route) is null;
ctr := ctr + 1;
cols := 1;
END LOOP;
:progress:='EXCEL READING IS DONE...';
----------------CLOSE THE EXCEL SHEET AFTER READING--------------
OLE2.INVOKE(APPLICATION,'QUIT');
-----------------RELEASE ALL OBJECTS
OLE2.RELEASE_OBJ(CELL);
OLE2.RELEASE_OBJ(WORKSHEET);
OLE2.RELEASE_OBJ(WORKBOOK);
OLE2.RELEASE_OBJ(WORKBOOKS);
OLE2.RELEASE_OBJ(APPLICATION);
:PROGRESS := 'DATA INSERTED INTO THE TABLE '; SYNCHRONIZE;
SYNCHRONIZE;
exception
WHEN OTHERS THEN
MESSAGE(sqlerrm);
END;Package specification and package body is
PACKAGE PK_EXCEL_TO_DB IS
TYPE tKeyValue IS RECORD (
CROUTE VARCHAR2(255),
VROUTE VARCHAR2(1000),
CTRNDATE VARCHAR2(255),
VTRNDATE VARCHAR2(1000),
CTTIME VARCHAR2(255),
VTTIME VARCHAR2(1000),
CTID VARCHAR2(255),
VTID VARCHAR2(1000));
TYPE tDataList IS TABLE OF tKeyValue;
PROCEDURE PR_DO_INSERT(i_lData IN tDataList);
END;
-----------------------------------------------------------------PK_EXCEL_TO_DB PACKAGE BODY-----------------------------------------------------
PACKAGE BODY PK_EXCEL_TO_DB IS
PROCEDURE PR_DO_INSERT(i_lData IN tDataList) IS
CC_ROUTE VARCHAR2(255);
VV_ROUTE VARCHAR2(1000);
CC_TRNDATE VARCHAR2(255);
VV_TRNDATE VARCHAR2(1000);
CC_TTIME VARCHAR2(255);
VV_TTIME VARCHAR2(1000);
CC_TID VARCHAR2(255);
VV_TID VARCHAR2(1000);
BEGIN
FOR i IN 1..i_lData.count
LOOP
CC_ROUTE:=CC_ROUTE || ',' || i_ldata(i).CROUTE;
VV_ROUTE:=VV_ROUTE|| ',''' || i_ldata(i).VROUTE || '''';
CC_TRNDATE :=CC_TRNDATE || ',' || i_ldata(i).CTRNDATE ;
VV_TRNDATE :=VV_TRNDATE || ',''' || i_ldata(i).VTRNDATE || '''';
CC_TTIME :=CC_TTIME || ',' || i_ldata(i).CTTIME ;
VV_TTIME :=VV_TTIME || ',''' || i_ldata(i).VTTIME || '''';
CC_TID :=CC_TID || ',' || i_ldata(i).CTID ;
VV_TID :=VV_TID || ',''' || i_ldata(i).VTID|| '''';
END LOOP;
FORMS_DDL('INSERT INTO TEMP2 (' || SUBSTR(CC_ROUTE, 2) || ' ' ||
SUBSTR(CC_TRNDATE, 2) || ' ' ||
SUBSTR(CC_TTIME, 2) || '' ||
SUBSTR(CC_TID, 2) || ')
VALUES (' || SUBSTR(VV_ROUTE,2) || ' ' ||
SUBSTR(VV_TRNDATE,2) || '' ||
SUBSTR(VV_TTIME,2) || ' ' ||
SUBSTR(VV_TID,2)|| ')');
--standard.commit;
commit;
END;
END;Thanks
Sam
Edited by: sam8682 on May 13, 2013 2:35 PM -
Uninitialized collection error
All,
I got the error ORA-06531: Reference to uninitialized collection. I cannot see any worong in my code(posted below). Could some one please tell me what wrong in my code?
Thanks In advance!!
CREATE OR REPLACE
Type T_PREO_Access_ProfileTest is Object
BUREAU_ID NUMBER(10),
AB_CODE VARCHAR2(4),
BUREAU_NAME VARCHAR2(20));
CREATE OR REPLACE
TYPE T_ProfileInfoTest IS TABLE OF PREORDER.T_PREO_Access_profiletest;
Procedure P_GetAccessProfileTest(userid in number, selectBureau out T_ProfileInfoTest, status out number)
as
profile_info T_ProfileInfo;
Bureau_info T_ProfileInfoTest; V_BUREAU_ID PREO_BUREAU.BUREAU_ID%type;
V_AGENCY_ID PREO_BUREAU.AGENCY_ID%type;
BEGIN
select T_PREO_Access_ProfileTest(BUREAU_ID, AB_CODE, BUREAU_NAME)
BULK COLLECT INTO Bureau_info
from preo_bureau
where AGENCY_ID in (select AGENCY_ID from preo_access_profile where ID = userid and id_type = 'U')
and BUREAU_ID not in (select BUREAU_ID from preo_access_profile where ID = userid and id_type = 'U');
Bureau_info := selectBureau;
status := 0;
EXCEPTION
WHEN OTHERS THEN
Status := -1;
END;
SQL> DECLARE
2 V_Bureau T_ProfileInfoTest; 3 Status smallint;
4 BEGIN
5
6 preo_security.P_GetAccessProfileTest(42, V_Bureau, Status);
7 dbms_output.put_line('GetProfile '||Status);
8
9 For i in V_Bureau.FIRST..V_Bureau.LAST loop
10
11 dbms_output.put_line('******************************* ');
12 dbms_output.put_line('BUREAU_code '||V_Bureau(i).AB_CODE);
13 dbms_output.put_line('BUREAU_name '||V_Bureau(i).BUREAU_name);
14 end loop;
15
16
17 END;
18 /
DECLARE
ERROR at line 1:
ORA-06531: Reference to uninitialized collectionORA-06512: at line 9The following line
Bureau_info := selectBureau;
should be
selectBureau := Bureau_info;
There may also be other errors. -
Ora-06531 reference to uninitialized collection --- Please help
Hello,
I am getting this "ora-06531 reference to uninitialized collection" while executing the below procedure.
=======================
PROCEDURE iud_account_col
( pv_account_version IN account_version_t
AS
LC_USR_ID CONSTANT VARCHAR2(30) := pkg_util.get_usr_id ;
LC_TMSTMP CONSTANT TIMESTAMP /*WITH TIME ZONE*/ := pkg_util.get_tmstmp ;
lv_level VARCHAR2(100);
lv_am_key_id number;
lv_acct_cusip VARCHAR2(12);
LC_AM_KEY_ID number;
LC_AM_VER_NUM number;
BEGIN
DECLARE
lv_am account_version_t;
lv_amv account_maint_t;
lv_amvv account_maint_version_t;
cursor c_acct_cusip ( cv_am_key_id varchar2) is
select acct_cusip
from account_maintenance
where am_key_id = lv_amv.am_key_id;
BEGIN
lv_am := pv_account_version;
lv_level := 'ACCOUNT_MAINT' ;
lv_amv := pv_account_version.account_maint;
LC_AM_KEY_ID := lv_amv.am_key_id;
FOR acct_cusip_info in c_acct_cusip (lv_am_key_id)
LOOP
lv_acct_cusip := acct_cusip_info.acct_cusip;
END LOOP;
IF lv_amv.action = 'I'
THEN
INSERT
INTO
account_maintenance
( am_key_id
, acct_cusip
, am_orig_cre_tmstp
, am_orig_usr_id
, delete_ind
, add_usr_id
, add_tmstmp
, lock_level_num
VALUES
( lv_amv.am_key_id
, lv_amv.acct_cusip
, LC_TMSTMP
, LC_USR_ID
, lv_amv.delete_ind
, LC_USR_ID
, LC_TMSTMP
, lv_amv.lock_level_num
END IF;
lv_amvv := pv_account_version.account_maint.account_maint_version;
lv_level := 'ACCOUNT_MAINT_VERSION';
LC_AM_VER_NUM := lv_amvv.am_ver_num;
IF lv_amvv.action = 'I'
THEN
-- Insert issue maint version
INSERT
INTO
ACCOUNT_MAINTENANCE_VERSION
( AM_KEY_ID
, AM_VER_NUM
, ACCT_CUSIP
, LEGAL_ENTITY
, APPR_STATUS_REF_ID
, INACTIVE_IND
, ADD_USR_ID
, ADD_TMSTMP
, UPD_USR_ID
, UPD_TMSTMP
, LOCK_LEVEL_NUM
VALUES
( lv_amv.am_key_id
, lv_amvv.am_ver_num
, lv_acct_cusip
, lv_amvv.legal_entity
, lv_amvv.appr_status_ref_id
, 'N'
, LC_USR_ID
, LC_TMSTMP
, LC_USR_ID
, LC_TMSTMP
, lv_amvv.lock_level_num
END IF; --- end for account maint version.
FOR j IN lv_amv.account_maint_comment_col.FIRST
.. lv_amv.account_maint_comment_col.LAST
LOOP
DECLARE
lv_amvc account_maint_comment_t;
BEGIN
lv_amvc := lv_amv.account_maint_comment_col(j);
lv_level := 'ACCOUNT_MAINT_COMMENT';
IF lv_amvc.action = 'I'
THEN
--- Insert into account maintenance comment table
INSERT
INTO
ACCOUNT_MAINTENANCE_COMMENT
( AM_KEY_ID
, AM_VER_NUM
, COMMENT_NUM
, COMMENT_TMSTP
, COMMENT_TXT
, INACTIVE_IND
, ADD_USR_ID
, ADD_TMSTMP
, LOCK_LEVEL_NUM
VALUES
( LC_AM_KEY_ID
, LC_AM_VER_NUM
, lv_amvc.comment_num
, LC_TMSTMP
, lv_amvc.comment_txt
, 'N'
, LC_USR_ID
, LC_TMSTMP
, lv_amvc.lock_level_num
END IF;
END;
END LOOP; --- end loop for account maint comments
END;
COMMIT WORK;
RETURN;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK WORK;
RAISE;
END iud_account_col;
====================
The UDT's are below:
CREATE OR REPLACE TYPE ACCOUNT_VERSION_T
AS OBJECT
PORTFOLIO PORTFOLIO_T
, ACCOUNT_MAINT ACCOUNT_MAINT_T
CREATE OR REPLACE TYPE ACCOUNT_MAINT_T
AS OBJECT
( AM_KEY_ID number
, ACCT_CUSIP varchar2(12)
, DELETE_IND varchar2(1)
, ADD_USR_ID varchar2(20)
, ADD_TMSTMP timestamp
, UPD_USR_ID varchar2(20)
, UPD_TMSTMP timestamp
, LOCK_LEVEL_NUM number
, ACTION VARCHAR2(1)
, ACCOUNT_MAINT_VERSION ACCOUNT_MAINT_VERSION_T
, ACCOUNT_MAINT_COMMENT_COL ACCOUNT_MAINT_COMMENT_COL_T
CREATE OR REPLACE TYPE ACCOUNT_MAINT_VERSION_T
AS OBJECT
( AM_KEY_ID number
, AM_VER_NUM number
, ACCT_CUSIP varchar2(12)
, LEGAL_ENTITY varchar2(100)
, APPR_STATUS_REF_ID number
, FUND_INACTIVE_TMSTMP timestamp
, ADD_USR_ID varchar2(20)
, ADD_TMSTMP timestamp
, UPD_USR_ID varchar2(20)
, UPD_TMSTMP timestamp
, LOCK_LEVEL_NUM number
, ACTION VARCHAR2(1)
CREATE OR REPLACE TYPE ACCOUNT_MAINT_COMMENT_T
AS OBJECT
( AM_KEY_ID number
, AM_VER_NUM number
, COMMENT_NUM number
, COMMENT_TXT varchar2(400)
, ADD_USR_ID varchar2(20)
, ADD_TMSTMP timestamp
, UPD_USR_ID varchar2(20)
, UPD_TMSTMP timestamp
, LOCK_LEVEL_NUM number
, ACTION VARCHAR2(1)
=====================================================
This is how I am trying to execute:
Declare
pv_account_version account_version_t := account_version_t(null
, account_maint_t ( 10041
, '11111111'
, 'N'
,'abc'
, NULL
, NULL
, NULL
, 1
,NULL-- 'I'
,ACCOUNT_MAINT_VERSION_T(10031
, 10001
, NULL
,'Legal entity'
,22
,NULL
,'abc'
,NULL
, NULL
,NULL
, 1
,NULL --'I'
,ACCOUNT_MAINT_COMMENT_COL_T(
10031
,10001
,1001
,'My first comment'
,'abc'
, NULL
, NULL
, NULL
, 1
, 'I')
Begin
pkg_cdm_process_v2.iud_account(pv_account_version);
END;
What am I doing wrong here....
Please help.
Thanks.Now if we only knew where the error was flagged.
PROCEDURE Iud_account_col
(pv_account_version IN ACCOUNT_VERSION_T)
AS
lc_usr_id CONSTANT VARCHAR2(30) := pkg_util.get_usr_id;
lc_tmstmp CONSTANT TIMESTAMP /*WITH TIME ZONE*/ := pkg_util.get_tmstmp;
lv_level VARCHAR2(100);
lv_am_key_id NUMBER;
lv_acct_cusip VARCHAR2(12);
lc_am_key_id NUMBER;
lc_am_ver_num NUMBER;
BEGIN
DECLARE
lv_am ACCOUNT_VERSION_T;
lv_amv ACCOUNT_MAINT_T;
lv_amvv ACCOUNT_MAINT_VERSION_T;
CURSOR c_acct_cusip(cv_am_key_id VARCHAR2) IS
SELECT acct_cusip
FROM account_maintenance
WHERE am_key_id = lv_amv.am_key_id;
BEGIN
lv_am := pv_account_version;
lv_level := 'ACCOUNT_MAINT';
lv_amv := pv_account_version.account_maint;
lc_am_key_id := lv_amv.am_key_id;
FOR acct_cusip_info IN c_acct_cusip(lv_am_key_id) LOOP
lv_acct_cusip := acct_cusip_info.acct_cusip;
END LOOP;
IF lv_amv.ACTION = 'I' THEN
INSERT INTO account_maintenance
(am_key_id,
acct_cusip,
am_orig_cre_tmstp,
am_orig_usr_id,
delete_ind,
add_usr_id,
add_tmstmp,
lock_level_num)
VALUES (lv_amv.am_key_id,
lv_amv.acct_cusip,
lc_tmstmp,
lc_usr_id,
lv_amv.delete_ind,
lc_usr_id,
lc_tmstmp,
lv_amv.lock_level_num);
END IF;
lv_amvv := pv_account_version.account_maint.account_maint_version;
lv_level := 'ACCOUNT_MAINT_VERSION';
lc_am_ver_num := lv_amvv.am_ver_num;
IF lv_amvv.ACTION = 'I' THEN
-- Insert issue maint version
INSERT INTO account_maintenance_version
(am_key_id,
am_ver_num,
acct_cusip,
legal_entity,
appr_status_ref_id,
inactive_ind,
add_usr_id,
add_tmstmp,
upd_usr_id,
upd_tmstmp,
lock_level_num)
VALUES (lv_amv.am_key_id,
lv_amvv.am_ver_num,
lv_acct_cusip,
lv_amvv.legal_entity,
lv_amvv.appr_status_ref_id,
'N',
lc_usr_id,
lc_tmstmp,
lc_usr_id,
lc_tmstmp,
lv_amvv.lock_level_num);
END IF; --- end for account maint version.
FOR j IN lv_amv.account_maint_comment_col.FIRST.. lv_amv.account_maint_comment_col.LAST LOOP
DECLARE
lv_amvc ACCOUNT_MAINT_COMMENT_T;
BEGIN
lv_amvc := lv_amv.Account_maint_comment_col(j);
lv_level := 'ACCOUNT_MAINT_COMMENT';
IF lv_amvc.ACTION = 'I' THEN
--- Insert into account maintenance comment table
INSERT INTO account_maintenance_comment
(am_key_id,
am_ver_num,
comment_num,
comment_tmstp,
comment_txt,
inactive_ind,
add_usr_id,
add_tmstmp,
lock_level_num)
VALUES (lc_am_key_id,
lc_am_ver_num,
lv_amvc.comment_num,
lc_tmstmp,
lv_amvc.comment_txt,
'N',
lc_usr_id,
lc_tmstmp,
lv_amvc.lock_level_num);
END IF;
END;
END LOOP; --- end loop for account maint comments
END;
COMMIT WORK;
RETURN;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK WORK;
RAISE;
END iud_account_col; -
Ora-06531 reference to uninitialized collection
Hello,
I am getting this "ora-06531 reference to uninitialized collection" while executing the below procedure.
=======================
PROCEDURE iud_account_col
( pv_account_version IN account_version_t
AS
LC_USR_ID CONSTANT VARCHAR2(30) := pkg_util.get_usr_id ;
LC_TMSTMP CONSTANT TIMESTAMP /*WITH TIME ZONE*/ := pkg_util.get_tmstmp ;
lv_level VARCHAR2(100);
lv_am_key_id number;
lv_acct_cusip VARCHAR2(12);
LC_AM_KEY_ID number;
LC_AM_VER_NUM number;
BEGIN
DECLARE
lv_am account_version_t;
lv_amv account_maint_t;
lv_amvv account_maint_version_t;
cursor c_acct_cusip ( cv_am_key_id varchar2) is
select acct_cusip
from account_maintenance
where am_key_id = lv_amv.am_key_id;
BEGIN
lv_am := pv_account_version;
lv_level := 'ACCOUNT_MAINT' ;
lv_amv := pv_account_version.account_maint;
LC_AM_KEY_ID := lv_amv.am_key_id;
FOR acct_cusip_info in c_acct_cusip (lv_am_key_id)
LOOP
lv_acct_cusip := acct_cusip_info.acct_cusip;
END LOOP;
IF lv_amv.action = 'I'
THEN
INSERT
INTO
account_maintenance
( am_key_id
, acct_cusip
, am_orig_cre_tmstp
, am_orig_usr_id
, delete_ind
, add_usr_id
, add_tmstmp
, lock_level_num
VALUES
( lv_amv.am_key_id
, lv_amv.acct_cusip
, LC_TMSTMP
, LC_USR_ID
, lv_amv.delete_ind
, LC_USR_ID
, LC_TMSTMP
, lv_amv.lock_level_num
END IF;
lv_amvv := pv_account_version.account_maint.account_maint_version;
lv_level := 'ACCOUNT_MAINT_VERSION';
LC_AM_VER_NUM := lv_amvv.am_ver_num;
IF lv_amvv.action = 'I'
THEN
-- Insert issue maint version
INSERT
INTO
ACCOUNT_MAINTENANCE_VERSION
( AM_KEY_ID
, AM_VER_NUM
, ACCT_CUSIP
, LEGAL_ENTITY
, APPR_STATUS_REF_ID
, INACTIVE_IND
, ADD_USR_ID
, ADD_TMSTMP
, UPD_USR_ID
, UPD_TMSTMP
, LOCK_LEVEL_NUM
VALUES
( lv_amv.am_key_id
, lv_amvv.am_ver_num
, lv_acct_cusip
, lv_amvv.legal_entity
, lv_amvv.appr_status_ref_id
, 'N'
, LC_USR_ID
, LC_TMSTMP
, LC_USR_ID
, LC_TMSTMP
, lv_amvv.lock_level_num
END IF; --- end for account maint version.
FOR j IN lv_amv.account_maint_comment_col.FIRST
.. lv_amv.account_maint_comment_col.LAST
LOOP
DECLARE
lv_amvc account_maint_comment_t;
BEGIN
lv_amvc := lv_amv.account_maint_comment_col(j);
lv_level := 'ACCOUNT_MAINT_COMMENT';
IF lv_amvc.action = 'I'
THEN
--- Insert into account maintenance comment table
INSERT
INTO
ACCOUNT_MAINTENANCE_COMMENT
( AM_KEY_ID
, AM_VER_NUM
, COMMENT_NUM
, COMMENT_TMSTP
, COMMENT_TXT
, INACTIVE_IND
, ADD_USR_ID
, ADD_TMSTMP
, LOCK_LEVEL_NUM
VALUES
( LC_AM_KEY_ID
, LC_AM_VER_NUM
, lv_amvc.comment_num
, LC_TMSTMP
, lv_amvc.comment_txt
, 'N'
, LC_USR_ID
, LC_TMSTMP
, lv_amvc.lock_level_num
END IF;
END;
END LOOP; --- end loop for account maint comments
END;
COMMIT WORK;
RETURN;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK WORK;
RAISE;
END iud_account_col;
====================
The UDT's are below:
CREATE OR REPLACE TYPE ACCOUNT_VERSION_T
AS OBJECT
PORTFOLIO PORTFOLIO_T
, ACCOUNT_MAINT ACCOUNT_MAINT_T
CREATE OR REPLACE TYPE ACCOUNT_MAINT_T
AS OBJECT
( AM_KEY_ID number
, ACCT_CUSIP varchar2(12)
, DELETE_IND varchar2(1)
, ADD_USR_ID varchar2(20)
, ADD_TMSTMP timestamp
, UPD_USR_ID varchar2(20)
, UPD_TMSTMP timestamp
, LOCK_LEVEL_NUM number
, ACTION VARCHAR2(1)
, ACCOUNT_MAINT_VERSION ACCOUNT_MAINT_VERSION_T
, ACCOUNT_MAINT_COMMENT_COL ACCOUNT_MAINT_COMMENT_COL_T
CREATE OR REPLACE TYPE ACCOUNT_MAINT_VERSION_T
AS OBJECT
( AM_KEY_ID number
, AM_VER_NUM number
, ACCT_CUSIP varchar2(12)
, LEGAL_ENTITY varchar2(100)
, APPR_STATUS_REF_ID number
, FUND_INACTIVE_TMSTMP timestamp
, ADD_USR_ID varchar2(20)
, ADD_TMSTMP timestamp
, UPD_USR_ID varchar2(20)
, UPD_TMSTMP timestamp
, LOCK_LEVEL_NUM number
, ACTION VARCHAR2(1)
CREATE OR REPLACE TYPE ACCOUNT_MAINT_COMMENT_T
AS OBJECT
( AM_KEY_ID number
, AM_VER_NUM number
, COMMENT_NUM number
, COMMENT_TXT varchar2(400)
, ADD_USR_ID varchar2(20)
, ADD_TMSTMP timestamp
, UPD_USR_ID varchar2(20)
, UPD_TMSTMP timestamp
, LOCK_LEVEL_NUM number
, ACTION VARCHAR2(1)
CREATE OR REPLACE TYPE ACCOUNT_MAINT_COMMENT_COL_T AS TABLE OF ACCOUNT_MAINT_COMMENT_T;
=====================================================
This is how I am trying to execute:
Declare
pv_account_version account_version_t := account_version_t(null
, account_maint_t ( 10041
, '11111111'
, 'N'
,'abc'
, NULL
, NULL
, NULL
, 1
,NULL-- 'I'
,ACCOUNT_MAINT_VERSION_T(10031
, 10001
, NULL
,'Legal entity'
,22
,NULL
,'abc'
,NULL
, NULL
,NULL
, 1
,NULL --'I'
,ACCOUNT_MAINT_COMMENT_COL_T(
10031
,10001
,1001
,'My first comment'
,'abc'
, NULL
, NULL
, NULL
, 1
, 'I')
Begin
pkg_cdm_process_v2.iud_account(pv_account_version);
END;
SQL> /
Declare
ERROR at line 1:
ORA-06531: Reference to uninitialized collection
ORA-06512: at "ACEENG.PKG_CDM_PROCESS_V2", line 799
ORA-06512: at line 27
What am I doing wrong here....
Please help.Hi,
Here is the table structures, data is in my procedure call.
I get error only while testing for 'account_maintenance_comment' table, if I comment this part in my procedure, i won't get this error.
CREATE TABLE ACCOUNT_MAINTENANCE
AM_KEY_ID NUMBER(32) NOT NULL,
ACCT_CUSIP VARCHAR2(12) NOT NULL,
AM_ORIG_CRE_TMSTP TIMESTAMP(6) NOT NULL,
AM_ORIG_USR_ID VARCHAR2(20) NOT NULL,
DELETE_IND VARCHAR2(1) NULL,
ADD_USR_ID VARCHAR2(20) NOT NULL,
ADD_TMSTMP TIMESTAMP(6) NOT NULL,
UPD_USR_ID VARCHAR2(20) NULL,
UPD_TMSTMP TIMESTAMP(6) NULL,
LOCK_LEVEL_NUM NUMBER(32) NOT NULL
CREATE TABLE ACCOUNT_MAINTENANCE_VERSION
AM_KEY_ID NUMBER(32) NOT NULL,
AM_VER_NUM NUMBER(32) NOT NULL,
ACCT_CUSIP VARCHAR2(12) NOT NULL,
SNAME VARCHAR2(20) NULL,
LNAME VARCHAR2(40) NULL,
EXT_ACCT_NUM NUMBER NULL,
ADVISOR_NM VARCHAR2(40) NULL,
SUB_ADVISOR_NM VARCHAR2(40) NULL,
LEGAL_ENTITY VARCHAR2(100) NULL,
DISP_PWR_ADVISOR_NM VARCHAR2(40) NULL,
VOT_PWR_ADVISOR_NM VARCHAR2(40) NULL,
ACCT_TYP_CD VARCHAR2(10) NULL,
ACCT_PUBLIC_NM VARCHAR2(40) NULL,
CLIENT_TYP_CD VARCHAR2(1) NULL,
CUSTODIAN_NM VARCHAR2(40) NULL,
NATIONALITY VARCHAR2(40) NULL,
PORTF_TEST_IND VARCHAR2(1) NULL,
PILOT_PORTF_IND VARCHAR2(1) NULL,
ELIG_IND_13DG VARCHAR2(1) NULL,
RR_EXCLUDE_IND VARCHAR2(1) NULL,
APPR_STATUS_REF_ID NUMBER(32) NULL,
NEXT_REVIEW_TMSTMP TIMESTAMP(6) NULL,
FUND_INACTIVE_TMSTMP TIMESTAMP(6) NULL,
LAST_APPR_USR_ID VARCHAR2(20) NULL,
LAST_APPR_TMSTMP TIMESTAMP(6) NULL,
INACTIVE_IND VARCHAR2(1) NOT NULL,
ADD_USR_ID VARCHAR2(20) NOT NULL,
ADD_TMSTMP TIMESTAMP(6) NOT NULL,
UPD_USR_ID VARCHAR2(20) NULL,
UPD_TMSTMP TIMESTAMP(6) NULL,
LOCK_LEVEL_NUM NUMBER(32) NOT NULL,
CREATE TABLE ACCOUNT_MAINTENANCE_COMMENT
AM_KEY_ID NUMBER(32) NOT NULL,
AM_VER_NUM NUMBER(32) NULL,
COMMENT_NUM NUMBER(32) NOT NULL,
COMMENT_TMSTP TIMESTAMP(6) NOT NULL,
COMMENT_TXT VARCHAR2(400) NULL,
INACTIVE_IND VARCHAR2(1) NOT NULL,
ADD_USR_ID VARCHAR2(20) NOT NULL,
ADD_TMSTMP TIMESTAMP(6) NOT NULL,
UPD_USR_ID VARCHAR2(20) NULL,
UPD_TMSTMP TIMESTAMP(6) NULL,
LOCK_LEVEL_NUM NUMBER(32) NOT NULL) -
ORA-06531:collection error in trigger.
We are using DBMS_XMLSave to insert data into an object nested view. Error ORA-06531 causes the trigger to fail when trying to access the collection count.. Below is the XML, view and trigger. What is missing or are we running into a bug?
Thanks
****************************** XML ****************************
<?xml version = '1.0'?>
<ROWSET>
<ROW>
<ArrestNumber>2</ArrestNumber>
<IMErrors>
<IMErrors_ITEM>
<ResponseErrorCode>CODE 2</ResponseErrorCode>
<ResponseErrorDesc>DESC 2</ResponseErrorDesc>
</IMErrors_ITEM>
<IMErrors_ITEM>
<ResponseErrorCode>CODE 1</ResponseErrorCode>
<ResponseErrorDesc>DESC 1</ResponseErrorDesc>
</IMErrors_ITEM>
</IMErrors>
</ROW>
</ROWSET>
************************* VIEW ****************************
CREATE OR REPLACE TYPE sjs.imres_error_type AS OBJECT
("ResponseErrorCode" VARCHAR2(10),
"ResponseErrorDesc" VARCHAR2(4000))
CREATE OR REPLACE TYPE sjs.imres_errors_type AS TABLE OF imres_error_type
CREATE OR REPLACE VIEW sjs.imresponse
AS SELECT ith.a_id AS "ArrestNumber",
CAST(MULTISET(SELECT ire.errorcode,
ire.errordesc
FROM sjs.imresponseerrors ire
WHERE ire.ith_id = ith.ith_id) AS imres_errors_type) AS "IMerrors"
FROM sjs.imtransactionhistory ith
************************* TRIGGER ****************************
CREATE OR REPLACE TRIGGER sjs.imresponse_new INSTEAD OF INSERT ON sjs.imresponse FOR EACH ROW
DECLARE
error_list imres_errors_type;
error_t imres_error_type;
ith_id_holder NUMBER(18);
cnt NUMBER;
BEGIN
INSERT INTO imtransactionhistory(a_id,interfacetransaction,ith_nysid,ith_fbi,ith_cjtn)
VALUES(:new."ArrestNumber",'PENDING','PENDING','PENDING','PENDING');
SELECT sjs.ith_sequence.currval INTO ith_id_holder FROM dual;
error_list := :new."IMerrors";
cnt := error_list.count;
-- FOR i IN 1..cnt LOOP
-- error_t := error_list(i);
-- INSERT INTO imresponseerrors(ith_id,errorcode,errordesc)
-- VALUES(ith_id_holder,error_t."ResponseErrorCode",error_t."ResponseErrorDesc");
-- END LOOP;
END;
************************* ERROR ****************************
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception: oracle.xml.sql.OracleXMLSQLException:
'oracle.jdbc.driver.OracleSQLException: ORA-06531: Reference to uninitialized collection
ORA-06512: at "SJS.IMRESPONSE_NEW", line 11
ORA-04088: error during execution of trigger 'SJS.IMRESPONSE_NEW'
' encountered during processing ROW element 0. All prior XML row changes were rolled back. in the XM
ORA-06512: at "SJS.XML_UTIL", line 72
ORA-06512: at "SJS.IMRES", line 35
ORA-06512: at line 6Frank
error_list is a collection. What happens if you use an index with it? E.G.
error_list(1) := :new."IMerrors";
Cheers, APC -
ORA-06530: Reference to uninitialized composite
I have,
Created an Object:
CREATE OR REPLACE TYPE opt_val_rec AS OBJECT (
parametervalue VARCHAR2(1),
PARAMETERID varchar2(4000)
);Created a table type:
create OR REPLACE type OPTVAL_TAB as table of OPT_VAL_REC;
Procedure to get the values into table type:
Create or replace procedure test_parm_val (id in varchar2 ,result out varchar2) as
pos number:=0;
test_paramval OPTVAL_TAB:= OPTVAL_TAB (null);
paramval_ord OPTVAL_TAB:= OPTVAL_TAB (null);
begin
for I in (select DISTINCT param_name from param_tbl)
loop
test_paramval.extend(10);
POS :=POS+1;
test_paramval (POS).PARAMETERVALUE:= get_param_val_fnc(id,I.PARAM_NAME);
test_paramval(POS). parameterid:=I.PARAM_NAME;
end loop;
SELECT CAST (MULTISET( SELECT pv.PARAMETERVALUE,
pv.parameterid
FROM TABLE (PARAMVAL)pv
ORDER BY pv.PARAMETERVALUE)
AS OPTVAL_TAB)
INTO paramval_ord
FROM dual;*/
exception
when others then
NULL;
End;
end test_parm_valNow when executing the procedure, facing the above error mentioned in the subject.
Please help.You initialized collection but not the object:
SQL> declare
2 pos number:=0;
3 test_paramval OPTVAL_TAB:= OPTVAL_TAB (null);
4 begin
5 test_paramval.extend(10);
6 POS :=POS+1;
7 test_paramval (POS).PARAMETERVALUE:= 'X';
8 test_paramval(POS). parameterid:='Y';
9 end;
10 /
declare
ERROR at line 1:
ORA-06530: Reference to uninitialized composite
ORA-06512: at line 7
SQL> declare
2 pos number:=0;
3 test_paramval OPTVAL_TAB:= OPTVAL_TAB (null);
4 begin
5 test_paramval.extend(10);
6 POS :=POS+1;
7 test_paramval (POS) := opt_val_rec(null,null);
8 test_paramval (POS).PARAMETERVALUE:= 'X';
9 test_paramval(POS). parameterid:='Y';
10 end;
11 /
PL/SQL procedure successfully completed.
SQL> -- or better
SQL> declare
2 pos number:=0;
3 test_paramval OPTVAL_TAB:= OPTVAL_TAB (null);
4 begin
5 test_paramval.extend(10);
6 POS :=POS+1;
7 test_paramval (POS) := opt_val_rec('X','Y');
8 end;
9 /
PL/SQL procedure successfully completed.
SQL> So change:
test_paramval (POS).PARAMETERVALUE:= get_param_val_fnc(id,I.PARAM_NAME);
test_paramval(POS). parameterid:=I.PARAM_NAME;to
test_paramval(POS) := opt_val_rec(get_param_val_fnc(id,I.PARAM_NAME),I.PARAM_NAME);SY. -
Reference to uninitialized composite
Lately we experience intermittent problems deleting data from tables with TAPI/TAPI triggers and CAPI packages (Headstart 6i). When deleting a relatively large number of rows, in this case 900, we get an ORA-06530 error which seems to be caused by the TAPI del procedure. Below is an example of the delete statement and subsequent error.
If we limit the number of rows to be deleted at once to e.g. 100 the problem disappears !
Has anyone experienced a similar problem and does somebody know what the cause and solution is ?
Thank you, Marcel.
delete from gns_demand_values
where cde_id in (select id from gns_customer_demand_structures where cdn_id=38);
delete from gns_demand_values
ERROR at line 1:
ORA-20999:
ORA-06512: at "HST65.CG$ERRORS", line 562
ORA-06512: at "GNS_OWN.CG$GNS_DEMAND_VALUES", line 1007
ORA-06530: Reference to uninitialized composite
ORA-06512: at "GNS_OWN.CG$BDR_GNS_DEMAND_VALUES", line 55
ORA-04088: error during execution of trigger 'GNS_OWN.CG$BDR_GNS_DEMAND_VALUES'
SQL> @messages
Error QMS-00100: Unhandled Exception ORA-06530: Reference to uninitialized composite in PL/SQL Program Unit cg$GNS_DEMAND_VALUES.del.others
Contact Helpdesk
PL/SQL procedure successfully completed.CDM RuleFrame is optimized for very fast interactive processing. There are a number of known issues related to performance of the CAPI during batch operations. In the Headstart User Guide, in the Business Logic Layer section, we have documented a number of strategies to address this problem. It sounds like you are probably running into some kind of stack overflow. That would explain why both limiting the number of rows processed and disabling the rules in question both resolve the problem.
Regards,
Lauri -
Win2008 64Bit Collection Error "Result has Repeating Key Value" On Host Per
Win2008 64Bit Collection Error "Result has Repeating Key Value" On Host Performance Tab [ID 864908.1]
Modified 29-JUL-2009 Type PROBLEM Status MODERATED
In this Document
Symptoms
Cause
Solution
References
This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process, and therefore has not been subject to an independent technical review.
Applies to:
Enterprise Manager Grid Control - Version: 10.2.0.5
Microsoft Windows Server 2008 x64 (AMD64/EM64T)
Symptoms
OMS: 10.2.0.5
Target Agent: 10.2.0.5 Windows 2008 Standard Edition Service Pack 1 64-bit
Happens for all Windows 2008 64-bit hosts with SAN drives using multipathing.
When accessing the Host > Performance tab on Windows 2008 64-bit host, get a Metric Collection Error:
Exception: oracle.sysman.emSDK.emd.comm.MetricGetException: Result has repeating key value on
drive 0: for diskactivity metric
emagent.trc shows:
2009-06-19 11:19:06,125 Thread-6736 ERROR engine:
[host, <hostname>,Load] : nmeegd_GetMetricData failed : Result has repeating key value : 0 C: U: C: U:
Collection Error:
Error getting data for target <hostname>. Exception:
oracle.sysman.emSDK.emd.comm.MetricGetException: Result has repeating key value : 0 C: U: C: U:
Switching to the last 24 hrs view.
Cause
Microsoft issue with Windows 2008 64-bit and SAN multipath.
Bug 8214155: ERROR RESULT HAS REPEATING KEY VALUE: <DISK DRIVES> ON DBCONSOLE
Solution
Contact Microsoft Support to fix the issue in Performance Monitor's PhysicalDisk object counter since "nmupm diskactivity" gets the information from the PhysicalDisk object counter.
References:
http://technet.microsoft.com/en-us/library/cc768048.aspx
http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/prork/pree_exa_swlz.mspx?mfr=true
References
BUG:8214155 - ERROR RESULT HAS REPEATING KEY VALUE: ON DBCONSOLE
This bug I found on Metalink but no workaround available. I've got the same problem everytime I view performance tab on Microsoft Windows 2008 x64. Does anyone know how to solve it?from the emoms.log
2009-12-08 14:25:09,171 [EMUI_14_25_05_/console/monitoring/hostSummary$pageType=current$ctxType=Hosts$selTab=1$target=CITIZEN02$type=host] ERROR host.HostSummaryDataObject getHostSummary.1215 - Result has repeating key value : 0 C: D: C: D:
oracle.sysman.emSDK.emd.comm.MetricGetException: Result has repeating key value : 0 C: D: C: D:
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:308)
at java.lang.Class.newInstance(Class.java:261)
at oracle.sysman.emSDK.xml.DelegatingHandler.getObjForTag(DelegatingHandler.java:121)
at oracle.sysman.emSDK.xml.DelegatingHandler.startElement(DelegatingHandler.java:170)
at org.xml.sax.helpers.ParserAdapter.startElement(ParserAdapter.java:597)
at oracle.xml.parser.v2.XMLContentHandler.startElement(XMLContentHandler.java:180)
at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1227)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:314)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:281)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:195)
at org.xml.sax.helpers.ParserAdapter.parse(ParserAdapter.java:431)
at oracle.sysman.emSDK.xml.DelegatingHandler.parseObj(DelegatingHandler.java:296)
at oracle.sysman.emSDK.emd.comm.EMDClient.parseStreamResponseContents(EMDClient.java:2883)
at oracle.sysman.emSDK.emd.comm.EMDClient.parseResponseStream(EMDClient.java:2805)
at oracle.sysman.emSDK.emd.comm.EMDClient.getResponseForRequest_(EMDClient.java:2516)
at oracle.sysman.emSDK.emd.comm.EMDClient.getResponseForRequest_(EMDClient.java:2450)
at oracle.sysman.emSDK.emd.comm.EMDClient.getResponseForRequest(EMDClient.java:2367)
at oracle.sysman.emSDK.emd.comm.EMDClient.getResponseForRequest(EMDClient.java:2352)
at oracle.sysman.emSDK.emd.comm.EMDClient.getMetrics(EMDClient.java:1120)
at oracle.sysman.eml.mntr.host.HostSummaryDataObject.getHostSummary(HostSummaryDataObject.java:813)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at oracle.cabo.ui.data.provider.MethodDataProvider.getDataObject(Unknown Source)
at oracle.cabo.ui.data.provider.TableDataProvider.getDataObject(Unknown Source)
at oracle.cabo.ui.data.provider.CachingDataProvider.getDataObject(Unknown Source)
at oracle.cabo.ui.data.provider.DataProviderStack.getDataObject(Unknown Source)
at oracle.cabo.ui.LogicalNodeRenderingContext.getDataObject(Unknown Source)
at oracle.cabo.ui.RootRenderingContext.getDataObject(Unknown Source)
at oracle.cabo.ui.LogicalNodeRenderingContext.getDataObject(Unknown Source)
at oracle.cabo.ui.RootRenderingContext.getDataObject(Unknown Source)
at oracle.cabo.ui.data.DataBoundValue.getValue(Unknown Source)
at oracle.cabo.ui.BaseUINode.getAttributeValueImpl(Unknown Source)
at oracle.cabo.ui.BaseUINode.getAttributeValue(Unknown Source)
at oracle.cabo.ui.laf.base.TextRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.DataScopeRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.BodyRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.DocumentRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.DocumentRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.servlet.ui.UINodePageRenderer.renderPage(Unknown Source)
at oracle.cabo.servlet.AbstractPageBroker.renderPage(Unknown Source)
at oracle.cabo.servlet.PageBrokerHandler.handleRequest(Unknown Source)
at oracle.cabo.servlet.UIXServlet.doGet(Unknown Source)
at oracle.sysman.emSDK.svlt.EMServlet.doGet(EMServlet.java:368)
at oracle.sysman.eml.app.Console.doGet(Console.java:304)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
at oracle.sysman.eml.app.EMRepLoginFilter.doFilter(EMRepLoginFilter.java:265)
at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
at oracle.sysman.eml.app.BrowserVersionFilter.doFilter(BrowserVersionFilter.java:122)
at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:20)
at oracle.sysman.emSDK.svlt.EMRedirectFilter.doFilter(EMRedirectFilter.java:102)
at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:20)
at oracle.sysman.eml.app.ContextInitFilter.doFilter(ContextInitFilter.java:369)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:670)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:341)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:816)
at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:231)
at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:136)
at -
I am using a 10.2 OEM agent to monitor various database versions (8i,9i,10g). I understand that using a 10.2 agent on an 8i database is not supported.... from what I have seen, you must use a 10.1 OEM agent. However, we would like to upgrade our 8i databases and therefore do not want to lower our OEM agent version to accomodate something that will phase out soon. In the meantime, I am getting collection errors. Some I was able to fix since error message had perl line number in it.... I know this is unsupported, but hopefully Oracle could list it as a valid work-around. There are just a few messages left:
Target MYDB
Type Database Instance
Metric Data Base parameter collection, Remote Password File, Remote OS Roles and Authentication, DB Password Setting
Collection Timestamp May 18, 2007 6:02:57 AM
Error Type Collection Failure
Message ORA-00900: invalid SQL statement
This was really 4 different metric error messages. Does anyone have suggestions of how to clear these error messages? I am fine with not collecting this info for our v8 databases. I was wondering if I could delete from sysman.MGMT_CURRENT_METRIC_ERRORS?
Or if someone knows how to fix these last few errors, that would be even better.
Thanks.No, all oracle8 dbs are at 8.1.7.4 (none at lower version).
References:
Metalink: WRONG SQL STATEMENTS IN ESAPRIVREPORTS.PL FOR 8.1.7.4 DATABASES (bug# 6130510)
Forum: Metric Collection Errors
Metalink: METRIC COLLECTION ERRORS AGAINST 8.1.7.4 DATABASES MONITORED BY GRID CONTROL (bug# 5921130)
Steps I have taken:
1. Used Note:373394.1 to grant appropriate privs
2. modified perl scripts until collection errors were resolved.
a) Ran the following statements on Oracle 8.1.7.4 database:
alter system set "_new_connect_by_enabled" = TRUE;
grant select on sysauth$ to dbsnmp;
3. have a handful (5 or 6) of errors left with no perl filenames, line numbers, etc. I would like to figure out how to either suppress these or resolve them so that I don't have to manually filter through metric errors trying to determine which are valid and which are not.
Thanks. -
The Cube with ID = Rate doesn't exist in the collection Error Message
When doing a Full Optimization in the Rate cube I get a "The Cube with ID = Rate doesn't exist in the collection" error message. What is causing this error and how do I fix it?
I have seen this error when reporting services was not properly configured. can you connect to http://servername/reports ?
If not try to fix reporting services first, this solved the problem for me in the past.
But usually in this case all the aplications are giving this error when modifying. Is this also the case in your appset?
Does Apshell work when you modify the application there?
-Joost -
Grid Control EMC Clariion Metric Collection Error
Hi,
I just deployed the EMC Clariion plugin and I get a metric collection error:
Storage Processor Configuration Collection Failure
Can't call method "che_freemem" on un undefined value at /<agent_path/sysman/admin/scripts/emx/emc_clariion_storage/emc_clariion_processor.pl line 127.
Anyone got any idea?
Cheers,
OlivierIt could be a parsing error due to unstrucured format of the navicli out put.
other metrics and reports should work fine.
Not a consistent error . Not seen on other deployments. -
Microsoft SQL Server Metric Collection Errors
Hi
I've installed the Microsoft SQL Server plugin.
I've added a SQL server for monitoring.
It only monitors / picks up Cache Hit Ratio.
Then i'm getting the following Metric Collection Errors:
Database Oct 31, 2006 2:35:45 PM Collection Failure Missing Properties : [pro...
[b]SQL Server Process Oct 31, 2006 2:35:45 PM Collection Failure Missing Properties : [pro...
[b]Processor Oct 31, 2006 2:35:45 PM Collection Failure /u/oracle10/OracleHomes/a...
Error Log Entry Oct 31, 2006 2:31:32 PM Collection Failure Missing Properties : [pro...
[b]MSSQL DatabaseFile Oct 31, 2006 2:31:32 PM Collection Failure Missing Properties : [pro...
[b]SQL Server Role Oct 31, 2006 2:31:32 PM Collection Failure Missing Properties : [pro...
[b]MSSQL Transaction Log Oct 31, 2006 2:31:32 PM Collection Failure Missing Properties : [pro...
[b]Database Parameter Oct 31, 2006 2:29:10 PM Collection Failure Missing Properties : [pro...
User Oct 31, 2006 2:29:10 PM Collection Failure Missing Properties : [pro...
[b]Integrated Security Setting Oct 31, 2006 2:29:10 PM Collection Failure Missing Properties : [pro...
[b]MSSQL FileGroup Oct 31, 2006 2:27:10 PM Collection Failure Missing Properties : [pro...
Login Oct 31, 2006 2:25:14 PM Collection Failure Missing Properties : [pro...
[b]Registry Setting Oct 31, 2006 2:24:21 PM Collection Failure Missing Properties : [pro...
[b]SQL Server Oct 31, 2006 2:24:21 PM Collection Failure Missing Properties : [pro...
[b]Database Setting Oct 31, 2006 2:24:21 PM Collection Failure Missing Properties : [pro...
Target <servername>.local
Type Microsoft SQL Server
Metric Database
Collection Timestamp Oct 31, 2006 2:35:45 PM
Error Type Collection Failure
Message [b]Missing Properties : [provided_host_os]
Thnx,
KennethNot sure if you got the plug-in working. If not, read on...
The error is due to failure in internal computation of the SQL Server Host related information.
Ensure that
1. All pre-requisites (specified in SQL Server plug-in Installation Guide) are satisfied
2. Provided property values for discovery of the SQL Server target are correct
- JDBC URL has correct port number
- If you are using older version of SQL Server plug-in, the name of SQL Server
instance that you provided is correct
Maybe you are looking for
-
Reading Component Type in ABAP
hi Given a table name, is it possible to identify its 'Component type' <b>programmatically</b> for example VBAK has the following Application/Component hierarchy: SD - Sales and Distribution SD-SLS - Sales VA - Application develo
-
Hi Experts, Im wirting a BDC for MM02. There is a problem that the number of views maintained in Materials Master are not same. So in recording, the view marked for selection does not correspond to the view when opening MM02 for some material. Please
-
System time in Write TO Measuremen​t File
Hi, everyone. I'm Sorin. I use a DAQ 6210 in Labview 8.2 to aquire some analog data at 1 sec,and i have 2 questions, please: 1. I need to record the data into a file .lvm, so i use "Write TO Measurement File" module with one column of time (X axe). B
-
Airport express and new macbook pro
my daughter has just purchased a new macbook pro and we have set up the airport express. her macbook tells her that she is connected to the airport express but she can not load safari.
-
Additional Conditions in Status of blocked conditions
Hi Experts, I have to show two more conditions in the staus tab of the blocked document for transaction /SAPSLL/BL_DOCS_EXP. I want to know if it is possible because I was not able to find any userexit for this so how to do this? Thanks Manish