PL/SQL error package body
Hi all,
I am new to PL/SQL. I am getting the following errors during the runtime. Please help
OWNER: BANINST1 NAME: GOKINTL TYPE: PACKAGE BODY
LINE/COL ERROR
115/14 PLS-00323: subprogram or cursor 'P_GOBINTL_INSERT' is declared in
a package specification and must be defined in the package body
147/14 PLS-00323: subprogram or cursor 'P_GORDOCM_INSERT' is declared in
a package specification and must be defined in the package body
167/14 PLS-00323: subprogram or cursor 'P_GOBINTL_UPDATE_ROW' is
declared in a package specification and must be defined in the
package body
183/9 PL/SQL: SQL Statement ignored
183/9 PLS-00394: wrong number of values in the INTO list of a FETCH
statement
199/14 PLS-00323: subprogram or cursor 'P_GORDOCM_UPDATE_ROW' is
declared in a package specification and must be defined in the
package body
6 rows selected.
PL/SQL code:
/* Functions to determine whether international student */
/* or not. */
FUNCTION f_check_gobintl_exists
( pidm IN GOBINTL.GOBINTL_PIDM%TYPE)
RETURN VARCHAR2 IS
status VARCHAR2(1) := '';
chk_gobintl_tab VARCHAR2(1) := '';
CURSOR GOBINTL_C
IS
SELECT 'Y'
FROM GOBINTL
WHERE GOBINTL_PIDM = pidm;
BEGIN
OPEN GOBINTL_C;
FETCH GOBINTL_C INTO chk_gobintl_tab;
IF GOBINTL_C%NOTFOUND THEN
status := 'N';
ELSE
status := 'Y';
END IF;
CLOSE GOBINTL_C;
RETURN status;
END f_check_gobintl_exists;
/* Function to determine whether the student is a */
/* non-resident alien or not. */
FUNCTION f_check_nonresident_status(
pidm IN GORVISA.GORVISA_PIDM%TYPE,
input_date IN GORVISA.GORVISA_VISA_START_DATE%TYPE)
RETURN VARCHAR2
IS
status VARCHAR2(1) := '';
chk_non_resi_status VARCHAR2(1) := '';
CURSOR CHK_NONRESI_STATUS_C
IS
SELECT 'Y'
FROM GORVISA,
STVVTYP
WHERE STVVTYP_NON_RES_IND = 'Y'
AND GORVISA_VTYP_CODE = STVVTYP_CODE
AND GORVISA_PIDM = pidm
AND GORVISA_VISA_START_DATE <= TRUNC(input_date)
AND GORVISA_VISA_EXPIRE_DATE >= TRUNC(input_date);
BEGIN
OPEN CHK_NONRESI_STATUS_C;
FETCH CHK_NONRESI_STATUS_C INTO chk_non_resi_status;
IF CHK_NONRESI_STATUS_C%NOTFOUND THEN
status := 'N';
ELSE
status := 'Y';
END IF;
CLOSE CHK_NONRESI_STATUS_C;
RETURN status;
END f_check_nonresident_status;
/* Function to select a single row from gobintl table. */
FUNCTION f_gobintl_select
( pidm GOBINTL.GOBINTL_PIDM%TYPE)
RETURN GOBINTL%ROWTYPE
IS
gobintl_row GOBINTL%ROWTYPE;
CURSOR GOBINTL_C
IS
SELECT GOBINTL_PIDM,
GOBINTL_SPOUSE_IND,
GOBINTL_SIGNATURE_IND,
GOBINTL_USER_ID,
GOBINTL_ACTIVITY_DATE,
GOBINTL_PASSPORT_ID,
GOBINTL_NATN_CODE_ISSUE,
GOBINTL_PASSPORT_EXP_DATE,
GOBINTL_I94_STATUS ,
GOBINTL_I94_DATE,
GOBINTL_REG_NUMBER,
GOBINTL_DURATION,
GOBINTL_CELG_CODE,
GOBINTL_CERT_NUMBER ,
GOBINTL_CERT_DATE_ISSUE,
GOBINTL_CERT_DATE_RECEIPT,
GOBINTL_ADMR_CODE,
GOBINTL_NATN_CODE_BIRTH,
GOBINTL_NATN_CODE_LEGAL,
GOBINTL_LANG_CODE,
GOBINTL_SPON_CODE,
GOBINTL_EMPT_CODE,
GOBINTL_FOREIGN_SSN,
GOBINTL_CHILD_NUMBER,
GOBINTL_VPDI_CODE
FROM GOBINTL
WHERE GOBINTL_PIDM = pidm;
BEGIN
OPEN GOBINTL_C;
FETCH GOBINTL_C INTO gobintl_row;
CLOSE GOBINTL_C;
RETURN gobintl_row;
END f_gobintl_select;
/* Function to select a single row from gordocm table. */
FUNCTION f_gordocm_select
( pidm IN GORDOCM.GORDOCM_PIDM%TYPE,
seq_no IN GORDOCM.GORDOCM_SEQ_NO%TYPE,
vtyp_code IN GORDOCM.GORDOCM_VTYP_CODE%TYPE,
visa_number IN GORDOCM.GORDOCM_VISA_NUMBER%TYPE,
docm_code IN GORDOCM.GORDOCM_DOCM_CODE%TYPE)
RETURN GORDOCM%ROWTYPE
IS
gordocm_row GORDOCM%ROWTYPE;
CURSOR GORDOCM_C
IS
SELECT GORDOCM_PIDM ,
GORDOCM_SEQ_NO ,
GORDOCM_VTYP_CODE,
GORDOCM_VISA_NUMBER,
GORDOCM_DOCM_CODE,
GORDOCM_DISPOSITION ,
GORDOCM_USER_ID ,
GORDOCM_ACTIVITY_DATE ,
GORDOCM_SRCE_CODE ,
GORDOCM_REQUEST_DATE ,
GORDOCM_RECEIVED_DATE
FROM GORDOCM
WHERE GORDOCM_PIDM = pidm
AND GORDOCM_SEQ_NO = seq_no
AND GORDOCM_VTYP_CODE = vtyp_code
AND GORDOCM_VISA_NUMBER = visa_number
AND GORDOCM_DOCM_CODE = docm_code;
BEGIN
OPEN GORDOCM_C;
FETCH GORDOCM_C into gordocm_row;
CLOSE GORDOCM_C;
RETURN gordocm_row;
END f_gordocm_select;
/* Function to select the row id of the row for the */
/* given pidm from gobintl. */
FUNCTION f_get_gobintl_rowid
(pidm IN GOBINTL.GOBINTL_PIDM%TYPE )
RETURN ROWID
AS
gobintl_rowid rowid := null;
CURSOR get_gobintl is
SELECT rowid
FROM gobintl
WHERE gobintl_pidm = pidm;
BEGIN
OPEN get_gobintl;
FETCH get_gobintl INTO gobintl_rowid;
CLOSE get_gobintl;
RETURN gobintl_rowid;
END f_get_gobintl_rowid;
/* Function to select the row id of the row for the */
/* given pidm from gorvisa. */
FUNCTION f_get_gorvisa_rowid
(pidm IN GORVISA.GORVISA_PIDM%TYPE )
RETURN ROWID
AS
gorvisa_rowid rowid := null;
CURSOR get_gorvisa IS
SELECT rowid
FROM gorvisa
WHERE gorvisa_pidm = pidm
ORDER BY gorvisa_seq_no desc;
BEGIN
OPEN get_gorvisa;
FETCH get_gorvisa INTO gorvisa_rowid;
CLOSE get_gorvisa;
RETURN gorvisa_rowid;
END f_get_gorvisa_rowid;
-- new functions for OA to return visa and international data
FUNCTION f_gorvisa_value
(p_pidm IN SPRIDEN.SPRIDEN_PIDM%TYPE ,
p_return_value VARCHAR2)
RETURN VARCHAR2 IS
CURSOR get_gorvisa
IS
SELECT *
FROM gorvisa
WHERE gorvisa_pidm = p_pidm
ORDER BY gorvisa_seq_no DESC;
gorvisa_var NUMBER := 0;
BEGIN
IF gv_gorvisa_row.gorvisa_pidm is NULL or
gv_gorvisa_row.gorvisa_pidm <> p_pidm then
OPEN get_gorvisa;
FETCH get_gorvisa INTO gv_gorvisa_row;
IF get_gorvisa%NOTFOUND THEN
gorvisa_var :=1;
END IF;
CLOSE get_gorvisa;
end if;
IF gorvisa_var = 0 THEN
CASE p_return_value
WHEN 'N' THEN
RETURN gv_gorvisa_row.gorvisa_visa_number;
WHEN 'C' THEN
RETURN gv_gorvisa_row.gorvisa_vtyp_code;
ELSE
RETURN ' ';
END CASE;
END IF;
RETURN NULL;
END f_gorvisa_value;
FUNCTION f_gobintl_value
(p_pidm IN SPRIDEN.SPRIDEN_PIDM%TYPE ,
p_return_value VARCHAR2)
RETURN VARCHAR2 IS
CURSOR get_gobintl
IS
SELECT *
FROM gobintl
WHERE gobintl_pidm = p_pidm;
gobintl_var NUMBER := 0;
BEGIN
IF gv_gobintl_row.gobintl_pidm is NULL or
gv_gobintl_row.gobintl_pidm <> p_pidm then
OPEN get_gobintl;
FETCH get_gobintl INTO gv_gobintl_row;
IF get_gobintl%NOTFOUND THEN
gobintl_var := 1;
END IF;
CLOSE get_gobintl;
end if;
IF gobintl_var = 0 THEN
CASE p_return_value
WHEN 'B' THEN
RETURN gv_gobintl_row.gobintl_natn_code_birth;
WHEN 'L' THEN
RETURN gv_gobintl_row.gobintl_natn_code_legal;
ELSE
RETURN ' ';
END CASE;
END IF;
RETURN NULL;
END f_gobintl_value;
/* Procedure to insert a row into gobintl table. */
PROCEDURE p_gobintl_insert
( pidm IN GOBINTL.GOBINTL_PIDM%TYPE,
spouse_ind IN GOBINTL.GOBINTL_SPOUSE_IND%TYPE,
signature_ind IN GOBINTL.GOBINTL_SIGNATURE_IND%TYPE,
user_id IN GOBINTL.GOBINTL_USER_ID%TYPE,
activity_date IN GOBINTL.GOBINTL_ACTIVITY_DATE%TYPE,
passport_id IN GOBINTL.GOBINTL_PASSPORT_ID%TYPE,
natn_code_issue IN GOBINTL.GOBINTL_NATN_CODE_ISSUE%TYPE,
passport_exp_date IN GOBINTL.GOBINTL_PASSPORT_EXP_DATE%TYPE,
i94_status IN GOBINTL.GOBINTL_I94_STATUS%TYPE,
i94_date IN GOBINTL.GOBINTL_I94_DATE%TYPE,
reg_number IN GOBINTL.GOBINTL_REG_NUMBER%TYPE,
duration IN GOBINTL.GOBINTL_DURATION%TYPE,
celg_code IN GOBINTL.GOBINTL_CELG_CODE%TYPE,
cert_number IN GOBINTL.GOBINTL_CERT_NUMBER%TYPE,
cert_date_issue IN GOBINTL.GOBINTL_CERT_DATE_ISSUE%TYPE,
cert_date_receipt IN GOBINTL.GOBINTL_CERT_DATE_RECEIPT%TYPE,
admr_code IN GOBINTL.GOBINTL_ADMR_CODE%TYPE,
natn_code_birth IN GOBINTL.GOBINTL_NATN_CODE_BIRTH%TYPE,
natn_code_legal IN GOBINTL.GOBINTL_NATN_CODE_LEGAL%TYPE,
lang_code IN GOBINTL.GOBINTL_LANG_CODE%TYPE,
spon_code IN GOBINTL.GOBINTL_SPON_CODE%TYPE,
empt_code IN GOBINTL.GOBINTL_EMPT_CODE%TYPE,
foreign_ssn IN GOBINTL.GOBINTL_FOREIGN_SSN%TYPE,
child_number IN GOBINTL.GOBINTL_CHILD_NUMBER%TYPE,
vpdi IN GOBINTL.GOBINTL_VPDI_CODE%TYPE
IS
BEGIN
INSERT INTO GOBINTL
( GOBINTL_PIDM,
GOBINTL_SPOUSE_IND,
GOBINTL_SIGNATURE_IND,
GOBINTL_USER_ID,
GOBINTL_ACTIVITY_DATE,
GOBINTL_PASSPORT_ID,
GOBINTL_NATN_CODE_ISSUE,
GOBINTL_PASSPORT_EXP_DATE,
GOBINTL_I94_STATUS,
GOBINTL_I94_DATE,
GOBINTL_REG_NUMBER,
GOBINTL_DURATION,
GOBINTL_CELG_CODE,
GOBINTL_CERT_NUMBER,
GOBINTL_CERT_DATE_ISSUE,
GOBINTL_CERT_DATE_RECEIPT,
GOBINTL_ADMR_CODE,
GOBINTL_NATN_CODE_BIRTH,
GOBINTL_NATN_CODE_LEGAL,
GOBINTL_LANG_CODE,
GOBINTL_SPON_CODE,
GOBINTL_EMPT_CODE,
GOBINTL_FOREIGN_SSN,
GOBINTL_CHILD_NUMBER,
GOBINTL_VPDI_CODE
VALUES
( pidm,
NVL(spouse_ind,'T'),
NVL(signature_ind,'T'),
user_id,
activity_date,
passport_id,
natn_code_issue,
passport_exp_date,
i94_status,
i94_date,
reg_number,
duration,
celg_code,
cert_number,
cert_date_issue,
cert_date_receipt,
admr_code,
natn_code_birth,
natn_code_legal,
lang_code,
spon_code,
empt_code,
foreign_ssn,
child_number,
'SV'
END p_gobintl_insert;
/* Procedure to insert a row into gordocm table. */
PROCEDURE p_gordocm_insert
pidm IN GORDOCM.GORDOCM_PIDM%TYPE,
seq_no IN GORDOCM.GORDOCM_SEQ_NO%TYPE,
vtyp_code IN GORDOCM.GORDOCM_VTYP_CODE%TYPE,
visa_number IN GORDOCM.GORDOCM_VISA_NUMBER%TYPE,
docm_code IN GORDOCM.GORDOCM_DOCM_CODE%TYPE,
disposition IN GORDOCM.GORDOCM_DISPOSITION%TYPE,
user_id IN GORDOCM.GORDOCM_USER_ID%TYPE,
activity_date IN GORDOCM.GORDOCM_ACTIVITY_DATE%TYPE,
srce_code IN GORDOCM.GORDOCM_SRCE_CODE%TYPE,
request_date IN GORDOCM.GORDOCM_REQUEST_DATE%TYPE,
received_date IN GORDOCM.GORDOCM_RECEIVED_DATE%TYPE,
vpdi_gordocm IN GORDOCM.GORDOCM_VPDI_CODE%TYPE
IS
BEGIN
INSERT INTO GORDOCM
( GORDOCM_PIDM,
GORDOCM_SEQ_NO,
GORDOCM_VTYP_CODE,
GORDOCM_VISA_NUMBER,
GORDOCM_DOCM_CODE,
GORDOCM_DISPOSITION,
GORDOCM_USER_ID,
GORDOCM_ACTIVITY_DATE,
GORDOCM_SRCE_CODE,
GORDOCM_REQUEST_DATE,
GORDOCM_RECEIVED_DATE,
GORDOCM_VPDI_CODE
VALUES
( pidm,
seq_no,
vtyp_code,
visa_number,
docm_code,
disposition,
user_id,
activity_date,
srce_code,
request_date,
received_date,
'SV'
END p_gordocm_insert;
/* Procedure to update a row in gobintl table. */
PROCEDURE p_gobintl_update_row
( pidm IN GOBINTL.GOBINTL_PIDM%TYPE,
spouse_ind IN GOBINTL.GOBINTL_SPOUSE_IND%TYPE,
signature_ind IN GOBINTL.GOBINTL_SIGNATURE_IND%TYPE,
user_id IN GOBINTL.GOBINTL_USER_ID%TYPE,
activity_date IN GOBINTL.GOBINTL_ACTIVITY_DATE%TYPE,
passport_id IN GOBINTL.GOBINTL_PASSPORT_ID%TYPE,
natn_code_issue IN GOBINTL.GOBINTL_NATN_CODE_ISSUE%TYPE,
passport_exp_date IN GOBINTL.GOBINTL_PASSPORT_EXP_DATE%TYPE,
i94_status IN GOBINTL.GOBINTL_I94_STATUS%TYPE,
i94_date IN GOBINTL.GOBINTL_I94_DATE%TYPE,
reg_number IN GOBINTL.GOBINTL_REG_NUMBER%TYPE,
duration IN GOBINTL.GOBINTL_DURATION%TYPE,
celg_code IN GOBINTL.GOBINTL_CELG_CODE%TYPE,
cert_number IN GOBINTL.GOBINTL_CERT_NUMBER%TYPE,
cert_date_issue IN GOBINTL.GOBINTL_CERT_DATE_ISSUE%TYPE,
cert_date_receipt IN GOBINTL.GOBINTL_CERT_DATE_RECEIPT%TYPE,
admr_code IN GOBINTL.GOBINTL_ADMR_CODE%TYPE,
natn_code_birth IN GOBINTL.GOBINTL_NATN_CODE_BIRTH%TYPE,
natn_code_legal IN GOBINTL.GOBINTL_NATN_CODE_LEGAL%TYPE,
lang_code IN GOBINTL.GOBINTL_LANG_CODE%TYPE,
spon_code IN GOBINTL.GOBINTL_SPON_CODE%TYPE,
empt_code IN GOBINTL.GOBINTL_EMPT_CODE%TYPE,
foreign_ssn IN GOBINTL.GOBINTL_FOREIGN_SSN%TYPE,
child_number IN GOBINTL.GOBINTL_CHILD_NUMBER%TYPE,
vpdi IN GOBINTL.GOBINTL_VPDI_CODE%TYPE
IS
BEGIN
UPDATE GOBINTL
SET GOBINTL_SPOUSE_IND = spouse_ind,
GOBINTL_SIGNATURE_IND = signature_ind,
GOBINTL_USER_ID = user_id,
GOBINTL_ACTIVITY_DATE = activity_date,
GOBINTL_PASSPORT_ID = passport_id,
GOBINTL_NATN_CODE_ISSUE = natn_code_issue,
GOBINTL_PASSPORT_EXP_DATE = passport_exp_date,
GOBINTL_I94_STATUS = i94_status,
GOBINTL_I94_DATE = i94_date,
GOBINTL_REG_NUMBER = reg_number,
GOBINTL_DURATION = duration,
GOBINTL_CELG_CODE = celg_code,
GOBINTL_CERT_NUMBER = cert_number,
GOBINTL_CERT_DATE_ISSUE = cert_date_issue,
GOBINTL_CERT_DATE_RECEIPT = cert_date_receipt,
GOBINTL_ADMR_CODE = admr_code,
GOBINTL_NATN_CODE_BIRTH = natn_code_birth,
GOBINTL_NATN_CODE_LEGAL = natn_code_legal,
GOBINTL_LANG_CODE = lang_code,
GOBINTL_SPON_CODE = spon_code,
GOBINTL_EMPT_CODE = empt_code,
GOBINTL_FOREIGN_SSN = foreign_ssn,
GOBINTL_CHILD_NUMBER = child_number,
GOBINTL_VPDI_CODE = 'SV'
WHERE GOBINTL_PIDM = pidm;
END p_gobintl_update_row;
/* Procedure to update a row in gordocm table. */
PROCEDURE p_gordocm_update_row
pidm IN GORDOCM.GORDOCM_PIDM%TYPE,
seq_no IN GORDOCM.GORDOCM_SEQ_NO%TYPE,
vtyp_code IN GORDOCM.GORDOCM_VTYP_CODE%TYPE,
visa_number IN GORDOCM.GORDOCM_VISA_NUMBER%TYPE,
docm_code IN GORDOCM.GORDOCM_DOCM_CODE%TYPE,
disposition IN GORDOCM.GORDOCM_DISPOSITION%TYPE,
user_id IN GORDOCM.GORDOCM_USER_ID%TYPE,
activity_date IN GORDOCM.GORDOCM_ACTIVITY_DATE%TYPE,
srce_code IN GORDOCM.GORDOCM_SRCE_CODE%TYPE,
request_date IN GORDOCM.GORDOCM_REQUEST_DATE%TYPE,
received_date IN GORDOCM.GORDOCM_RECEIVED_DATE%TYPE,
vpdi_gordocm IN GORDOCM.GORDOCM_VPDI_CODE%TYPE
IS
BEGIN
UPDATE GORDOCM
SET GORDOCM_DISPOSITION = disposition,
GORDOCM_USER_ID = user_id,
GORDOCM_ACTIVITY_DATE = activity_date,
GORDOCM_SRCE_CODE = srce_code,
GORDOCM_REQUEST_DATE = request_date,
GORDOCM_RECEIVED_DATE = received_date,
GORDOCM_VPDI_CODE = vpdi_gordocm
WHERE GORDOCM_PIDM = pidm
AND GORDOCM_SEQ_NO = seq_no
AND GORDOCM_VTYP_CODE = vtyp_code
AND GORDOCM_VISA_NUMBER = visa_number
AND GORDOCM_DOCM_CODE = docm_code;
END p_gordocm_update_row;
/* Procedure to delete a row from gobintl table. */
PROCEDURE p_gobintl_delete_row
pidm IN GOBINTL.GOBINTL_PIDM%TYPE
IS
BEGIN
DELETE
FROM GOBINTL
WHERE GOBINTL_PIDM = pidm;
END p_gobintl_delete_row;
/* Procedure to delete a row from gordocm table. */
PROCEDURE p_gordocm_delete_row
pidm IN GORDOCM.GORDOCM_PIDM%TYPE,
seq_no IN GORDOCM.GORDOCM_SEQ_NO%TYPE,
vtyp_code IN GORDOCM.GORDOCM_VTYP_CODE%TYPE,
visa_number IN GORDOCM.GORDOCM_VISA_NUMBER%TYPE,
docm_code IN GORDOCM.GORDOCM_DOCM_CODE%TYPE
IS
BEGIN
DELETE
FROM GORDOCM
WHERE GORDOCM_PIDM = pidm
AND GORDOCM_SEQ_NO = seq_no
AND GORDOCM_VTYP_CODE = vtyp_code
AND GORDOCM_VISA_NUMBER = visa_number
AND GORDOCM_DOCM_CODE = docm_code;
END p_gordocm_delete_row;
END GOKINTL;
/
Hello,
Create a package specifiction see following example and add just defintions or all the function and procedure
CREATE OR REPLACE PACKAGE gokintl
AS
PROCEDURE item_logging;
FUNCTION get_sys_parms (i_parameter IN VARCHAR2)
RETURN VARCHAR2;
END gokintl;
/Then package body, I have comment FIX THIS SOMETHING WRONG take a look and fix your logic
CREATE OR REPLACE PACKAGE BODY gokintl
AS
FUNCTION f_check_gobintl_exists (pidm IN gobintl.gobintl_pidm%TYPE)
RETURN VARCHAR2
IS
status VARCHAR2 (1) := '';
chk_gobintl_tab VARCHAR2 (1) := '';
CURSOR gobintl_c
IS
SELECT 'Y'
FROM gobintl
WHERE gobintl_pidm = pidm;
BEGIN
OPEN gobintl_c;
FETCH gobintl_c INTO chk_gobintl_tab;
IF gobintl_c%NOTFOUND
THEN
status := 'N';
ELSE
status := 'Y';
END IF;
CLOSE gobintl_c;
RETURN status;
END f_check_gobintl_exists;
/* Function to determine whether the student is a */
/* non-resident alien or not. */
FUNCTION f_check_nonresident_status (pidm IN gorvisa.gorvisa_pidm%TYPE,
input_date IN gorvisa.gorvisa_visa_start_date%TYPE
RETURN VARCHAR2
IS
status VARCHAR2 (1) := '';
chk_non_resi_status VARCHAR2 (1) := '';
CURSOR chk_nonresi_status_c
IS
SELECT 'Y'
FROM gorvisa, stvvtyp
WHERE stvvtyp_non_res_ind = 'Y'
AND gorvisa_vtyp_code = stvvtyp_code
AND gorvisa_pidm = pidm
AND gorvisa_visa_start_date <= TRUNC (input_date)
AND gorvisa_visa_expire_date >= TRUNC (input_date);
BEGIN
OPEN chk_nonresi_status_c;
FETCH chk_nonresi_status_c INTO chk_non_resi_status;
IF chk_nonresi_status_c%NOTFOUND
THEN
status := 'N';
ELSE
status := 'Y';
END IF;
CLOSE chk_nonresi_status_c;
RETURN status;
END f_check_nonresident_status;
/* Function to select a single row from gobintl table. */
FUNCTION f_gobintl_select (pidm gobintl.gobintl_pidm%TYPE)
RETURN gobintl%ROWTYPE
IS
gobintl_row gobintl%ROWTYPE;
CURSOR gobintl_c
IS
SELECT gobintl_pidm,
gobintl_spouse_ind,
gobintl_signature_ind,
gobintl_user_id,
gobintl_activity_date,
gobintl_passport_id,
gobintl_natn_code_issue,
gobintl_passport_exp_date,
gobintl_i94_status,
gobintl_i94_date,
gobintl_reg_number,
gobintl_duration,
gobintl_celg_code,
gobintl_cert_number,
gobintl_cert_date_issue,
gobintl_cert_date_receipt,
gobintl_admr_code,
gobintl_natn_code_birth,
gobintl_natn_code_legal,
gobintl_lang_code,
gobintl_spon_code,
gobintl_empt_code,
gobintl_foreign_ssn,
gobintl_child_number,
gobintl_vpdi_code
FROM gobintl
WHERE gobintl_pidm = pidm;
BEGIN
OPEN gobintl_c;
FETCH gobintl_c INTO gobintl_row;
CLOSE gobintl_c;
RETURN gobintl_row;
END f_gobintl_select;
/* Function to select a single row from gordocm table. */
FUNCTION f_gordocm_select (pidm IN gordocm.gordocm_pidm%TYPE,
seq_no IN gordocm.gordocm_seq_no%TYPE,
vtyp_code IN gordocm.gordocm_vtyp_code%TYPE,
visa_number IN gordocm.gordocm_visa_number%TYPE,
docm_code IN gordocm.gordocm_docm_code%TYPE
RETURN gordocm%ROWTYPE
IS
gordocm_row gordocm%ROWTYPE;
CURSOR gordocm_c
IS
SELECT gordocm_pidm,
gordocm_seq_no,
gordocm_vtyp_code,
gordocm_visa_number,
gordocm_docm_code,
gordocm_disposition,
gordocm_user_id,
gordocm_activity_date,
gordocm_srce_code,
gordocm_request_date,
gordocm_received_date
FROM gordocm
WHERE gordocm_pidm = pidm
AND gordocm_seq_no = seq_no
AND gordocm_vtyp_code = vtyp_code
AND gordocm_visa_number = visa_number
AND gordocm_docm_code = docm_code;
BEGIN
OPEN gordocm_c;
FETCH gordocm_c INTO gordocm_row;
CLOSE gordocm_c;
RETURN gordocm_row;
END f_gordocm_select;
/* Function to select the row id of the row for the */
/* given pidm from gobintl. */
FUNCTION f_get_gobintl_rowid (pidm IN gobintl.gobintl_pidm%TYPE)
RETURN ROWID
AS
gobintl_rowid ROWID := NULL;
CURSOR get_gobintl
IS
SELECT ROWID
FROM gobintl
WHERE gobintl_pidm = pidm;
BEGIN
OPEN get_gobintl;
FETCH get_gobintl INTO gobintl_rowid;
CLOSE get_gobintl;
RETURN gobintl_rowid;
END f_get_gobintl_rowid;
/* Function to select the row id of the row for the */
/* given pidm from gorvisa. */
FUNCTION f_get_gorvisa_rowid (pidm IN gorvisa.gorvisa_pidm%TYPE)
RETURN ROWID
AS
gorvisa_rowid ROWID := NULL;
CURSOR get_gorvisa
IS
SELECT ROWID
FROM gorvisa
WHERE gorvisa_pidm = pidm
ORDER BY gorvisa_seq_no DESC;
BEGIN
OPEN get_gorvisa;
FETCH get_gorvisa INTO gorvisa_rowid;
CLOSE get_gorvisa;
RETURN gorvisa_rowid;
END f_get_gorvisa_rowid;
-- new functions for OA to return visa and international data
FUNCTION f_gorvisa_value (p_pidm IN spriden.spriden_pidm%TYPE,
p_return_value varchar2
RETURN VARCHAR2
IS
CURSOR get_gorvisa
IS
SELECT *
FROM gorvisa
WHERE gorvisa_pidm = p_pidm
ORDER BY gorvisa_seq_no DESC;
gorvisa_var NUMBER := 0;
BEGIN
IF (gv_gorvisa_row.gorvisa_pidm IS NULL
OR gv_gorvisa_row.gorvisa_pidm = p_pidm) --- FIX THIS SOMETHIGNG WRONG HERE
THEN
OPEN get_gorvisa;
FETCH get_gorvisa INTO gv_gorvisa_row;
IF get_gorvisa%NOTFOUND
THEN
gorvisa_var := 1;
END IF;
CLOSE get_gorvisa;
END IF;
IF gorvisa_var = 0
THEN
CASE p_return_value
WHEN 'N'
THEN
RETURN gv_gorvisa_row.gorvisa_visa_number;
WHEN 'C'
THEN
RETURN gv_gorvisa_row.gorvisa_vtyp_code;
ELSE
RETURN ' ';
END CASE;
END IF;
RETURN NULL;
END f_gorvisa_value;
FUNCTION f_gobintl_value (p_pidm IN spriden.spriden_pidm%TYPE,
p_return_value varchar2
RETURN VARCHAR2
IS
CURSOR get_gobintl
IS
SELECT *
FROM gobintl
WHERE gobintl_pidm = p_pidm;
gobintl_var NUMBER := 0;
BEGIN
IF gv_gobintl_row.gobintl_pidm IS NULL
OR gv_gobintl_row.gobintl_pidm = p_pidm -- FIX THIS SOMETHIGNG WRONG HERE
THEN
OPEN get_gobintl;
FETCH get_gobintl INTO gv_gobintl_row;
IF get_gobintl%NOTFOUND
THEN
gobintl_var := 1;
END IF;
CLOSE get_gobintl;
END IF;
IF gobintl_var = 0
THEN
CASE p_return_value
WHEN 'B'
THEN
RETURN gv_gobintl_row.gobintl_natn_code_birth;
WHEN 'L'
THEN
RETURN gv_gobintl_row.gobintl_natn_code_legal;
ELSE
RETURN ' ';
END CASE;
END IF;
RETURN NULL;
END f_gobintl_value;
/* Procedure to insert a row into gobintl table. */
PROCEDURE p_gobintl_insert (pidm IN gobintl.gobintl_pidm%TYPE,
spouse_ind IN gobintl.gobintl_spouse_ind%TYPE,
signature_ind IN gobintl.gobintl_signature_ind%TYPE,
user_id IN gobintl.gobintl_user_id%TYPE,
activity_date IN gobintl.gobintl_activity_date%TYPE,
passport_id IN gobintl.gobintl_passport_id%TYPE,
natn_code_issue IN gobintl.gobintl_natn_code_issue%TYPE,
passport_exp_date IN gobintl.gobintl_passport_exp_date%TYPE,
i94_status IN gobintl.gobintl_i94_status%TYPE,
i94_date IN gobintl.gobintl_i94_date%TYPE,
reg_number IN gobintl.gobintl_reg_number%TYPE,
duration IN gobintl.gobintl_duration%TYPE,
celg_code IN gobintl.gobintl_celg_code%TYPE,
cert_number IN gobintl.gobintl_cert_number%TYPE,
cert_date_issue IN gobintl.gobintl_cert_date_issue%TYPE,
cert_date_receipt IN gobintl.gobintl_cert_date_receipt%TYPE,
admr_code IN gobintl.gobintl_admr_code%TYPE,
natn_code_birth IN gobintl.gobintl_natn_code_birth%TYPE,
natn_code_legal IN gobintl.gobintl_natn_code_legal%TYPE,
lang_code IN gobintl.gobintl_lang_code%TYPE,
spon_code IN gobintl.gobintl_spon_code%TYPE,
empt_code IN gobintl.gobintl_empt_code%TYPE,
foreign_ssn IN gobintl.gobintl_foreign_ssn%TYPE,
child_number IN gobintl.gobintl_child_number%TYPE,
vpdi IN gobintl.gobintl_vpdi_code%TYPE
IS
BEGIN
INSERT INTO gobintl
gobintl_pidm,
gobintl_spouse_ind,
gobintl_signature_ind,
gobintl_user_id,
gobintl_activity_date,
gobintl_passport_id,
gobintl_natn_code_issue,
gobintl_passport_exp_date,
gobintl_i94_status,
gobintl_i94_date,
gobintl_reg_number,
gobintl_duration,
gobintl_celg_code,
gobintl_cert_number,
gobintl_cert_date_issue,
gobintl_cert_date_receipt,
gobintl_admr_code,
gobintl_natn_code_birth,
gobintl_natn_code_legal,
gobintl_lang_code,
gobintl_spon_code,
gobintl_empt_code,
gobintl_foreign_ssn,
gobintl_child_number,
gobintl_vpdi_code
VALUES (
pidm,
NVL (spouse_ind, 'T'),
NVL (signature_ind, 'T'),
user_id,
activity_date,
passport_id,
natn_code_issue,
passport_exp_date,
i94_status,
i94_date,
reg_number,
duration,
celg_code,
cert_number,
cert_date_issue,
cert_date_receipt,
admr_code,
natn_code_birth,
natn_code_legal,
lang_code,
spon_code,
empt_code,
foreign_ssn,
child_number,
'SV'
END p_gobintl_insert;
/* Procedure to insert a row into gordocm table. */
PROCEDURE p_gordocm_insert (pidm IN gordocm.gordocm_pidm%TYPE,
seq_no IN gordocm.gordocm_seq_no%TYPE,
vtyp_code IN gordocm.gordocm_vtyp_code%TYPE,
visa_number IN gordocm.gordocm_visa_number%TYPE,
docm_code IN gordocm.gordocm_docm_code%TYPE,
disposition IN gordocm.gordocm_disposition%TYPE,
user_id IN gordocm.gordocm_user_id%TYPE,
activity_date IN gordocm.gordocm_activity_date%TYPE,
srce_code IN gordocm.gordocm_srce_code%TYPE,
request_date IN gordocm.gordocm_request_date%TYPE,
received_date IN gordocm.gordocm_received_date%TYPE,
vpdi_gordocm IN gordocm.gordocm_vpdi_code%TYPE
IS
BEGIN
INSERT INTO gordocm
gordocm_pidm,
gordocm_seq_no,
gordocm_vtyp_code,
gordocm_visa_number,
gordocm_docm_code,
gordocm_disposition,
gordocm_user_id,
gordocm_activity_date,
gordocm_srce_code,
gordocm_request_date,
gordocm_received_date,
gordocm_vpdi_code
VALUES (
pidm,
seq_no,
vtyp_code,
visa_number,
docm_code,
disposition,
user_id,
activity_date,
srce_code,
request_date,
received_date,
'SV'
END p_gordocm_insert;
/* Procedure to update a row in gobintl table. */
PROCEDURE p_gobintl_update_row (pidm IN gobintl.gobintl_pidm%TYPE,
spouse_ind IN gobintl.gobintl_spouse_ind%TYPE,
signature_ind IN gobintl.gobintl_signature_ind%TYPE,
user_id IN gobintl.gobintl_user_id%TYPE,
activity_date IN gobintl.gobintl_activity_date%TYPE,
passport_id IN gobintl.gobintl_passport_id%TYPE,
natn_code_issue IN gobintl.gobintl_natn_code_issue%TYPE,
passport_exp_date IN gobintl.gobintl_passport_exp_date%TYPE,
i94_status IN gobintl.gobintl_i94_status%TYPE,
i94_date IN gobintl.gobintl_i94_date%TYPE,
reg_number IN gobintl.gobintl_reg_number%TYPE,
duration IN gobintl.gobintl_duration%TYPE,
celg_code IN gobintl.gobintl_celg_code%TYPE,
cert_number IN gobintl.gobintl_cert_number%TYPE,
cert_date_issue IN gobintl.gobintl_cert_date_issue%TYPE,
cert_date_receipt IN gobintl.gobintl_cert_date_receipt%TYPE,
admr_code IN gobintl.gobintl_admr_code%TYPE,
natn_code_birth IN gobintl.gobintl_natn_code_birth%TYPE,
natn_code_legal IN gobintl.gobintl_natn_code_legal%TYPE,
lang_code IN gobintl.gobintl_lang_code%TYPE,
spon_code IN gobintl.gobintl_spon_code%TYPE,
empt_code IN gobintl.gobintl_empt_code%TYPE,
foreign_ssn IN gobintl.gobintl_foreign_ssn%TYPE,
child_number IN gobintl.gobintl_child_number%TYPE,
vpdi IN gobintl.gobintl_vpdi_code%TYPE
IS
BEGIN
UPDATE gobintl
SET gobintl_spouse_ind = spouse_ind,
gobintl_signature_ind = signature_ind,
gobintl_user_id = user_id,
gobintl_activity_date = activity_date,
gobintl_passport_id = passport_id,
gobintl_natn_code_issue = natn_code_issue,
gobintl_passport_exp_date = passport_exp_date,
gobintl_i94_status = i94_status,
gobintl_i94_date = i94_date,
gobintl_reg_number = reg_number,
gobintl_duration = duration,
gobintl_celg_code = celg_code,
gobintl_cert_number = cert_number,
gobintl_cert_date_issue = cert_date_issue,
gobintl_cert_date_receipt = cert_date_receipt,
gobintl_admr_code = admr_code,
gobintl_natn_code_birth = natn_code_birth,
gobintl_natn_code_legal = natn_code_legal,
gobintl_lang_code = lang_code,
gobintl_spon_code = spon_code,
gobintl_empt_code = empt_code,
gobintl_foreign_ssn = foreign_ssn,
gobintl_child_number = child_number,
gobintl_vpdi_code = 'SV'
WHERE gobintl_pidm = pidm;
END p_gobintl_update_row;
/* Procedure to update a row in gordocm table. */
PROCEDURE p_gordocm_update_row (pidm IN gordocm.gordocm_pidm%TYPE,
seq_no IN gordocm.gordocm_seq_no%TYPE,
vtyp_code IN gordocm.gordocm_vtyp_code%TYPE,
visa_number IN gordocm.gordocm_visa_number%TYPE,
docm_code IN gordocm.gordocm_docm_code%TYPE,
disposition IN gordocm.gordocm_disposition%TYPE,
user_id IN gordocm.gordocm_user_id%TYPE,
activity_date IN gordocm.gordocm_activity_date%TYPE,
srce_code IN gordocm.gordocm_srce_code%TYPE,
request_date IN gordocm.gordocm_request_date%TYPE,
received_date IN gordocm.gordocm_received_date%TYPE,
vpdi_gordocm IN gordocm.gordocm_vpdi_code%TYPE
IS
BEGIN
UPDATE gordocm
SET gordocm_disposition = disposition,
gordocm_user_id = user_id,
gordocm_activity_date = activity_date,
gordocm_srce_code = srce_code,
gordocm_request_date = request_date,
gordocm_received_date = received_date,
gordocm_vpdi_code = vpdi_gordocm
WHERE gordocm_pidm = pidm
AND gordocm_seq_no = seq_no
AND gordocm_vtyp_code = vtyp_code
AND gordocm_visa_number = visa_number
AND gordocm_docm_code = docm_code;
END p_gordocm_update_row;
/* Procedure to delete a row from gobintl table. */
PROCEDURE p_gobintl_delete_row (pidm IN gobintl.gobintl_pidm%TYPE)
IS
BEGIN
DELETE FROM gobintl
WHERE gobintl_pidm = pidm;
END p_gobintl_delete_row;
/* Procedure to delete a row from gordocm table. */
PROCEDURE p_gordocm_delete_row (pidm IN gordocm.gordocm_pidm%TYPE,
seq_no IN gordocm.gordocm_seq_no%TYPE,
vtyp_code IN gordocm.gordocm_vtyp_code%TYPE,
visa_number IN gordocm.gordocm_visa_number%TYPE,
docm_code IN gordocm.gordocm_docm_code%TYPE
IS
BEGIN
DELETE FROM gordocm
WHERE gordocm_pidm = pidm
AND gordocm_seq_no = seq_no
AND gordocm_vtyp_code = vtyp_code
AND gordocm_visa_number = visa_number
AND gordocm_docm_code = docm_code;
END p_gordocm_delete_row;
END gokintl;
/Regards
Similar Messages
-
Package body variable- is it always safe to use it?
In a package spec i have a function "function1" and in package body this functions does following:
1) it evaluate/calculate a variable/value "Flag1".
2) it calls 4 (package body) functions that needs to use value "Flag1".
I have forgotten how "package body variables" work. Is it safe to declare variable "Flag1" in a "package body" level? So that "function1" can initialize this variable and 4 functions can use this variable later too. Or it is not safe if i have lot of sessions in my database which may go into conflict with sharing this "flag1"? And i perhaps better send "flag1" as function parameter to all 4 functions?Easy enough to test, but it depends on what you mean by the "next run".
In the same session:
SQL > CREATE PACKAGE p AS
2 FUNCTION f1(p_v1 IN NUMBER) RETURN NUMBER;
3 END;
4 /
Package created.
SQL > CREATE PACKAGE BODY p AS
2 g_var VARCHAR2(10);
3
4 FUNCTION f2(p_v2 IN VARCHAR2) RETURN NUMBER IS
5 BEGIN
6 DBMS_OUTPUT.Put_Line('Value of g_var in f2 is: '||g_var);
7 RETURN 1;
8 END;
9
10 FUNCTION f1 (p_v1 IN NUMBER) RETURN NUMBER IS
11 l_res NUMBER;
12 BEGIN
13 DBMS_OUTPUT.Put_Line('Value of g_var at start f1 is: '||g_var);
14 SELECT dummy INTO g_var FROM dual;
15 l_res := f2(g_var);
16 g_var := 'A';
17 DBMS_OUTPUT.Put_Line('Value of g_var at end f1 is: '||g_var);
18 RETURN l_res;
19 END;
20 END;
21 /
Package body created.
SQL > var v number;
SQL > exec :v := p.f1(1);
Value of g_var at start f1 is:
Value of g_var in f2 is: X
Value of g_var at end f1 is: A
PL/SQL procedure successfully completed.
SQL > exec :v := p.f1(2);
Value of g_var at start f1 is: A
Value of g_var in f2 is: X
Value of g_var at end f1 is: A
PL/SQL procedure successfully completed.but after running it in one session, then doing the "next run" in a different session:
SQL > exec :v2 := p.f1(1);
Value of g_var at start f1 is:
Value of g_var in f2 is: X
Value of g_var at end f1 is: A
PL/SQL procedure successfully completed.John -
When installing apex 3.1.2 in Oracle RDBMS 9.2.0.8 Ii got the following errors:
command:
SQL> @apexins SYSAUX SYSAUX TEMP /i/
output:
APPLICATION 4411 - APEX - System Messages
Set Credentials...
Check Compatibility...
WWV_FLOW_API.FLOWS_API_LAST_EXTENDED20070906
WWV_FLOW_API.CURRENT_FLOWS_VERSION20070906
WWV_FLOW_API.IMPORT_COMPATIBLE_WITH_VERSION 20070108
WWV_FLOW_API.COMPATIBLE
Set Application ID...
begin
ERROR at line 1:
ORA-04068: existing state of packages has been discarded
ORA-04063: package body "FLOWS_030100.WWV_FLOW_UTILITIES" has errors
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at "FLOWS_030100.WWV_FLOW_AUDIT", line 66
ORA-06512: at line 3
Checked table all_errors
output:
FLOWS_030100 WWV_FLOW_UTILITIES PACKAGE BODY 1 5928 3 PLS-00201: identifier 'DBMS_LOCK' must be declared
Any suggestions ?
Regards,
RemoHi Penny,
Your suggested solution worked.
However i got other errors and so i ran apxremov.sql to cleanup the installation.
Forgot to mention that there was a previous installation of apex.
After rerunning apexins.sql installation was completed succesfully.
Thanks for reply.
Remo -
Hi
With the following line of code i am having problems with the following line of code ...
sql := (
' IF INSERTING THEN '||CHR(10)||
' v_operation := ''INSERT''; '||CHR(10)||
' ELSIF UPDATING THEN '||CHR(10)||
' v_operation := ''UPDATE''; '||CHR(10)||
' ELSE '||CHR(10)||
' v_operation := ''DELETE''; '||CHR(10)||
' END IF; '||CHR(13));
When I execute my package body I get an error with the above in my package ...
any ideas why ?Bad variable name.
ME_XE?declare
2 sql long;
3 begin
4 null;
5 end;
6 /
sql long;
ERROR at line 2:
ORA-06550: line 2, column 1:
PLS-00103: Encountered the symbol "SQL" when expecting one of the following:
begin function package pragma procedure subtype type use
<an identifier> <a double-quoted delimited-identifier> form
current cursor
The symbol "<an identifier> was inserted before "SQL" to continue.
Elapsed: 00:00:00.06
ME_XE?declare
2 wsql long;
3 begin
4 null;
5 end;
6 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.03
ME_XE?
{code} -
Error in PL/SQL generated package
Hello,
With the help of ODM (version 10,2,0,3,1 -Build 479) I created a SVM classification model, which works very fine.
After that, I generated the PL/SQL package, which returns an ORA-06512 in the call into DBMS_DATA_MINING.CREATE_MODEL.
I tried to rebuild the model in the ODM and all worked well.
I am kind of stuck here and don't know what to do next.
Thanks,
IgorHi,
hope you had a nice vacation.
As for the code I have a feeling I try to fill a varchar2 with text, larger than declared length. I created a standard PL/SQL package as defined in the tutorial and the error remained. I wonder how come that with the use of odminer the building process is successful while the use of PL/SQL package returns errors?
Thanks,
Igor
CREATE VIEW mining_data_build_v AS
SELECT
a.CUST_ID,
a.CUST_GENDER,
2003-a.CUST_YEAR_OF_BIRTH AGE,
a.CUST_MARITAL_STATUS,
c.COUNTRY_NAME,
a.CUST_INCOME_LEVEL,
b.EDUCATION,
b.OCCUPATION,
b.HOUSEHOLD_SIZE,
b.YRS_RESIDENCE,
b.AFFINITY_CARD,
b.BULK_PACK_DISKETTES,
b.FLAT_PANEL_MONITOR,
b.HOME_THEATER_PACKAGE,
b.BOOKKEEPING_APPLICATION,
b.PRINTER_SUPPLIES,
b.Y_BOX_GAMES,
b.OS_DOC_SET_KANJI
FROM
sh.customers a,
sh.supplementary_demographics b,
sh.countries c
WHERE
a.CUST_ID = b.CUST_ID
AND a.country_id = c.country_id
AND a.cust_id between 101501 and 103000;
using the package
CREATE PACKAGE "DATAMININGACTIVITY9" AUTHID DEFINER AS
PROCEDURE "MINING_DATA_BUI666498540_BA"(case_table IN VARCHAR2 DEFAULT '"DMUSER"."MINING_DATA_BUILD_V"',
additional_table_1 IN VARCHAR2 DEFAULT NULL,
model_name IN VARCHAR2 DEFAULT 'MINING_DATA_B80870_SV',
confusion_matrix_name IN VARCHAR2 DEFAULT '"DM4J$T504449054041_M"',
lift_result_name IN VARCHAR2 DEFAULT '"DM4J$T504449083327_L"',
roc_result_name IN VARCHAR2 DEFAULT '"DM4J$T504449092305_R"',
test_metric_name IN VARCHAR2 DEFAULT '"DM4J$MINING_D51278_TM"',
drop_output IN BOOLEAN DEFAULT FALSE);
END;
CREATE PACKAGE BODY "DATAMININGACTIVITY9" AS
c_long_sql_statement_length CONSTANT INTEGER := 32767;
SUBTYPE SQL_STATEMENT_TYPE IS VARCHAR2(32767);
SUBTYPE LONG_SQL_STATEMENT_TYPE IS DBMS_SQL.VARCHAR2A;
TYPE TABLE_ARRAY is TABLE OF VARCHAR2(62);
TYPE LSTMT_REC_TYPE IS RECORD (
lstmt dbms_sql.VARCHAR2A,
lb BINARY_INTEGER DEFAULT 1,
ub BINARY_INTEGER DEFAULT 0);
TYPE LSTMT_REC_TYPE_ARRAY is TABLE OF LSTMT_REC_TYPE;
TYPE QUERY_ARRAY is TABLE OF SQL_STATEMENT_TYPE;
TYPE TARGET_VALUES_LIST IS TABLE OF VARCHAR2(32);
TYPE VALUE_COUNT_LIST IS TABLE OF NUMBER;
PROCEDURE dump_varchar2a(vc2a dbms_sql.VARCHAR2A) IS
v_str varchar2(32767);
BEGIN
DBMS_OUTPUT.PUT_LINE('dump_varchar2a:');
FOR i IN 1..vc2a.COUNT LOOP
v_str := vc2a(i);
DBMS_OUTPUT.PUT_LINE(v_str);
END LOOP;
END;
PROCEDURE ls_append(
r_lstmt IN OUT NOCOPY LSTMT_REC_TYPE,
p_txt VARCHAR2)
IS
BEGIN
r_lstmt.ub := r_lstmt.ub + 1;
r_lstmt.lstmt(r_lstmt.ub) := p_txt;
END ls_append;
PROCEDURE ls_append(
r_lstmt IN OUT NOCOPY LSTMT_REC_TYPE,
p_txt LSTMT_REC_TYPE) IS
BEGIN
FOR i IN p_txt.lb..p_txt.ub LOOP
r_lstmt.ub := r_lstmt.ub + 1;
r_lstmt.lstmt(r_lstmt.ub) := p_txt.lstmt(i);
END LOOP;
END ls_append;
FUNCTION query_valid(
p_query VARCHAR2) RETURN BOOLEAN
IS
v_is_valid BOOLEAN;
BEGIN
BEGIN
EXECUTE IMMEDIATE p_query;
v_is_valid := TRUE;
EXCEPTION WHEN OTHERS THEN
v_is_valid := FALSE;
END;
RETURN v_is_valid;
END query_valid;
FUNCTION table_exist(
p_table_name VARCHAR2) RETURN BOOLEAN IS
BEGIN
RETURN query_valid('SELECT * FROM ' || dbms_assert.simple_sql_name(p_table_name));
END table_exist;
FUNCTION model_exist(
p_model_name VARCHAR2) RETURN BOOLEAN
IS
v_model_cnt NUMBER;
v_model_exists BOOLEAN := FALSE;
BEGIN
SELECT COUNT(*) INTO v_model_cnt FROM DM_USER_MODELS WHERE NAME = UPPER(p_model_name);
IF v_model_cnt > 0 THEN
v_model_exists := TRUE;
END IF;
--DBMS_OUTPUT.PUT_LINE('model exist: '||v_model_exists);
RETURN v_model_exists;
EXCEPTION WHEN OTHERS THEN
RETURN FALSE;
END model_exist;
PROCEDURE drop_table(
p_table_name VARCHAR2)
IS
v_stmt SQL_STATEMENT_TYPE;
BEGIN
v_stmt := 'DROP TABLE '||dbms_assert.simple_sql_name(p_table_name)||' PURGE';
EXECUTE IMMEDIATE v_stmt;
EXCEPTION WHEN OTHERS THEN
NULL;
--DBMS_OUTPUT.PUT_LINE('Failed drop_table: '||p_table_name);
END drop_table;
PROCEDURE drop_view(
p_view_name VARCHAR2)
IS
v_stmt SQL_STATEMENT_TYPE;
BEGIN
v_stmt := 'DROP VIEW '||dbms_assert.simple_sql_name(p_view_name);
EXECUTE IMMEDIATE v_stmt;
EXCEPTION WHEN OTHERS THEN
NULL;
--DBMS_OUTPUT.PUT_LINE('Failed drop_view: '||p_view_name);
END drop_view;
PROCEDURE drop_model(
p_model_name VARCHAR2)
IS
BEGIN
DBMS_DATA_MINING.DROP_MODEL(p_model_name);
EXCEPTION WHEN OTHERS THEN
NULL;
--DBMS_OUTPUT.PUT_LINE('Failed drop_model: '||p_model_name);
END drop_model;
FUNCTION create_new_temp_table_name(prefix IN VARCHAR2, len IN NUMBER)
RETURN VARCHAR2 IS
v_table_name VARCHAR2(30);
v_seed NUMBER;
BEGIN
dbms_random.seed(SYS_GUID());
v_table_name := 'DM$T' || SUBSTR(prefix, 0, 4) || dbms_random.string(NULL, len-8);
--DBMS_OUTPUT.PUT_LINE('create_new_temp_table_name: '||v_table_name);
RETURN v_table_name;
END create_new_temp_table_name;
FUNCTION create_new_temp_table_name(prefix IN VARCHAR2)
RETURN VARCHAR2 IS
BEGIN
RETURN create_new_temp_table_name(prefix, 30);
END create_new_temp_table_name;
FUNCTION ADD_TEMP_TABLE(tempTables IN OUT NOCOPY TABLE_ARRAY, temp_table IN VARCHAR2) RETURN VARCHAR2 IS
BEGIN
tempTables.EXTEND;
tempTables(tempTables.COUNT) := temp_table;
return temp_table;
END;
PROCEDURE DROP_TEMP_TABLES(tempTables IN OUT NOCOPY TABLE_ARRAY) IS
v_temp VARCHAR2(30);
BEGIN
FOR i IN 1..tempTables.COUNT LOOP
v_temp := tempTables(i);
drop_table(v_temp);
drop_view(v_temp);
tempTables.DELETE(i);
END LOOP;
END;
PROCEDURE CHECK_RESULTS(drop_output IN BOOLEAN,
result_name IN VARCHAR2) IS
BEGIN
-- drop all results if drop = true, otherwise make sure all results don't exist already (raise exception)
IF result_name IS NOT NULL THEN
IF drop_output THEN
drop_table(result_name);
drop_view(result_name);
ELSIF (table_exist(result_name)) THEN
RAISE_APPLICATION_ERROR(-20000, 'Result table exists: '||result_name);
END IF;
END IF;
END;
PROCEDURE CHECK_MODEL(drop_output IN BOOLEAN,
model_name IN VARCHAR2) IS
BEGIN
-- drop all results if drop = true, otherwise make sure all results don't exist already (raise exception)
IF model_name IS NOT NULL THEN
IF drop_output THEN
drop_model(model_name);
ELSIF (model_exist(model_name)) THEN
RAISE_APPLICATION_ERROR(-20001, 'Model exists: '||model_name);
END IF;
END IF;
END;
PROCEDURE create_table_from_query(query IN OUT NOCOPY LSTMT_REC_TYPE)
IS
v_cursor NUMBER;
v_feedback INTEGER;
BEGIN
v_cursor := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(
c => v_cursor,
statement => query.lstmt,
lb => query.lb,
ub => query.ub,
lfflg => FALSE,
language_flag => dbms_sql.native);
v_feedback := DBMS_SQL.EXECUTE(v_cursor);
DBMS_SQL.CLOSE_CURSOR(v_cursor);
EXCEPTION WHEN OTHERS THEN
IF DBMS_SQL.IS_OPEN(v_cursor) THEN
DBMS_SQL.CLOSE_CURSOR(v_cursor);
END IF;
RAISE;
END;
FUNCTION get_row_count(tableName IN VARCHAR2)
RETURN INTEGER IS
v_stmt VARCHAR(100);
qcount INTEGER := 0;
BEGIN
v_stmt := 'SELECT COUNT(*) FROM '|| tableName;
EXECUTE IMMEDIATE v_stmt INTO qcount;
RETURN qcount;
END get_row_count;
PROCEDURE SET_EQUAL_DISTRIBUTION (
counts IN OUT VALUE_COUNT_LIST )
IS
v_minvalue NUMBER := 0;
BEGIN
FOR i IN counts.FIRST..counts.LAST
LOOP
IF ( i = counts.FIRST )
THEN
v_minvalue := counts(i);
ELSIF ( counts(i) > 0 AND v_minvalue > counts(i) )
THEN
v_minvalue := counts(i);
END IF;
END LOOP;
FOR i IN counts.FIRST..counts.LAST
LOOP
counts(i) := v_minvalue;
END LOOP;
END SET_EQUAL_DISTRIBUTION;
PROCEDURE GET_STRATIFIED_DISTRIBUTION (
table_name VARCHAR2,
attribute_name VARCHAR2,
percentage NUMBER,
attr_values IN OUT NOCOPY TARGET_VALUES_LIST,
counts IN OUT NOCOPY VALUE_COUNT_LIST,
counts_sampled IN OUT NOCOPY VALUE_COUNT_LIST )
IS
v_tmp_stmt VARCHAR2(4000);
BEGIN
v_tmp_stmt :=
'SELECT /*+ noparallel(t)*/ ' || attribute_name ||
', count(*), ROUND ( ( count(*) * ' || percentage || ') / 100.0 ) FROM '|| table_name ||
' WHERE ' || attribute_name ||' IS NOT NULL GROUP BY ' || attribute_name;
EXECUTE IMMEDIATE v_tmp_stmt
BULK COLLECT INTO attr_values, counts, counts_sampled;
END GET_STRATIFIED_DISTRIBUTION;
FUNCTION GENERATE_STRATIFIED_SQL (
v_2d_temp_view VARCHAR2,
src_table_name VARCHAR2,
attr_names TARGET_VALUES_LIST,
attribute_name VARCHAR2,
percentage NUMBER,
op VARCHAR2,
equal_distribution IN BOOLEAN DEFAULT FALSE) RETURN LSTMT_REC_TYPE
IS
v_tmp_lstmt LSTMT_REC_TYPE;
attr_values_res TARGET_VALUES_LIST;
counts_res VALUE_COUNT_LIST;
counts_sampled_res VALUE_COUNT_LIST;
tmp_str VARCHAR2(4000);
sample_count PLS_INTEGER;
BEGIN
GET_STRATIFIED_DISTRIBUTION(src_table_name, attribute_name, percentage, attr_values_res, counts_res, counts_sampled_res);
IF ( equal_distribution = TRUE )
THEN
SET_EQUAL_DISTRIBUTION(counts_sampled_res);
END IF;
v_tmp_lstmt.ub := 0; -- initialize
ls_append(v_tmp_lstmt, 'CREATE TABLE ');
ls_append(v_tmp_lstmt, v_2d_temp_view);
ls_append(v_tmp_lstmt, ' AS ');
ls_append(v_tmp_lstmt, '( SELECT ');
FOR i IN attr_names.FIRST..attr_names.LAST
LOOP
IF ( i != attr_names.FIRST )
THEN
ls_append(v_tmp_lstmt,',');
END IF;
ls_append(v_tmp_lstmt, attr_names(i));
END LOOP;
ls_append(v_tmp_lstmt, ' FROM (SELECT /*+ no_merge */ t.*, ROWNUM RNUM FROM ' || src_table_name || ' t) WHERE ' );
FOR i IN attr_values_res.FIRST..attr_values_res.LAST
LOOP
IF ( i != attr_values_res.FIRST )
THEN
tmp_str := ' OR ';
END IF;
IF ( counts_res(i) <= 2 ) THEN
sample_count := counts_res(i);
ELSE
sample_count := counts_sampled_res(i);
END IF;
tmp_str := tmp_str ||
'( ' || attribute_name || ' = ''' || attr_values_res(i) || '''' ||
' AND ORA_HASH(RNUM,(' || counts_res(i) || ' -1),12345) ' || op || sample_count || ') ';
ls_append(v_tmp_lstmt, tmp_str );
END LOOP;
ls_append(v_tmp_lstmt, ') ');
return v_tmp_lstmt;
END GENERATE_STRATIFIED_SQL;
PROCEDURE "MINING_DATA_BUI666498540_BA"(case_table IN VARCHAR2 DEFAULT '"DMUSER"."MINING_DATA_BUILD_V"',
additional_table_1 IN VARCHAR2 DEFAULT NULL,
model_name IN VARCHAR2 DEFAULT 'MINING_DATA_B80870_SV',
confusion_matrix_name IN VARCHAR2 DEFAULT '"DM4J$T504449054041_M"',
lift_result_name IN VARCHAR2 DEFAULT '"DM4J$T504449083327_L"',
roc_result_name IN VARCHAR2 DEFAULT '"DM4J$T504449092305_R"',
test_metric_name IN VARCHAR2 DEFAULT '"DM4J$MINING_D51278_TM"',
drop_output IN BOOLEAN DEFAULT FALSE)
IS
additional_data TABLE_ARRAY := TABLE_ARRAY(
additional_table_1
v_tempTables TABLE_ARRAY := TABLE_ARRAY();
v_2d_view VARCHAR2(30);
v_2d_view_build VARCHAR2(30);
v_2d_view_test VARCHAR2(30);
v_2d_temp_view VARCHAR2(30);
v_txn_views TABLE_ARRAY := TABLE_ARRAY();
v_txn_views_build TABLE_ARRAY := TABLE_ARRAY();
v_txn_views_test TABLE_ARRAY := TABLE_ARRAY();
v_txn_temp_views TABLE_ARRAY := TABLE_ARRAY();
v_case_data SQL_STATEMENT_TYPE := case_table;
v_case_id VARCHAR2(30) := 'DMR$CASE_ID';
v_tmp_lstmt LSTMT_REC_TYPE;
v_target_value VARCHAR2(4000) := '1';
v_num_quantiles NUMBER := 10;
v_build_data VARCHAR2(30);
v_test_data VARCHAR2(30);
v_prior VARCHAR2(30);
v_build_setting VARCHAR2(30);
v_apply_result VARCHAR2(30);
v_build_cm VARCHAR2(30);
v_test_cm VARCHAR2(30);
v_accuracy NUMBER;
v_area_under_curve NUMBER;
v_avg_accuracy NUMBER;
v_predictive_confidence NUMBER;
v_confusion_matrix VARCHAR2(30);
v_gen_caseId BOOLEAN := FALSE;
v_2d_txt_view VARCHAR2(30);
v_content_index VARCHAR2(30);
v_content_index_pref VARCHAR2(30);
v_category_temp_table VARCHAR2(30);
v_term_definitions VARCHAR2(30);
v_term_final_table VARCHAR2(30);
v_term_final_table_index VARCHAR2(30);
v_term_final_table_test VARCHAR2(30);
pragma autonomous_transaction;
BEGIN
CHECK_MODEL(drop_output, model_name);
CHECK_RESULTS(drop_output, test_metric_name);
CHECK_RESULTS(drop_output, confusion_matrix_name);
CHECK_RESULTS(drop_output, lift_result_name);
CHECK_RESULTS(drop_output, roc_result_name);
IF (v_gen_caseId) THEN
v_case_data := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
EXECUTE IMMEDIATE 'CREATE TABLE '||v_case_data||' as SELECT rownum as DMR$CASE_ID, t.* FROM ('||case_table||') t ';
EXECUTE IMMEDIATE 'ALTER TABLE '||v_case_data||' add constraint '||create_new_temp_table_name('PK')||' primary key (DMR$CASE_ID)';
END IF;
----- Start: Input Data Preparation -----
v_2d_temp_view := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
ls_append(v_tmp_lstmt, 'CREATE VIEW ');
ls_append(v_tmp_lstmt, v_2d_temp_view);
ls_append(v_tmp_lstmt, ' AS ');
ls_append(v_tmp_lstmt, ' ( ');
ls_append(v_tmp_lstmt, 'SELECT "CASE_TABLE"."CUST_ID" as "DMR$CASE_ID", TO_CHAR( "CASE_TABLE"."AFFINITY_CARD") AS "AFFINITY_CARD",
"CASE_TABLE"."AGE" AS "AGE",
TO_CHAR( "CASE_TABLE"."BOOKKEEPING_APPLICATION") AS "BOOKKEEPING_APPLICATION",
TO_CHAR( "CASE_TABLE"."BULK_PACK_DISKETTES") AS "BULK_PACK_DISKETTES",
"CASE_TABLE"."COUNTRY_NAME" AS "COUNTRY_NAME",
"CASE_TABLE"."CUST_GENDER" AS "CUST_GENDER",
"CASE_TABLE"."CUST_INCOME_LEVEL" AS "CUST_INCOME_LEVEL",
"CASE_TABLE"."CUST_MARITAL_STATUS" AS "CUST_MARITAL_STATUS",
"CASE_TABLE"."EDUCATION" AS "EDUCATION",
TO_CHAR( "CASE_TABLE"."FLAT_PANEL_MONITOR") AS "FLAT_PANEL_MONITOR",
TO_CHAR( "CASE_TABLE"."HOME_THEATER_PACKAGE") AS "HOME_THEATER_PACKAGE",
"CASE_TABLE"."HOUSEHOLD_SIZE" AS "HOUSEHOLD_SIZE",
"CASE_TABLE"."OCCUPATION" AS "OCCUPATION",
TO_CHAR( "CASE_TABLE"."OS_DOC_SET_KANJI") AS "OS_DOC_SET_KANJI",
TO_CHAR( "CASE_TABLE"."Y_BOX_GAMES") AS "Y_BOX_GAMES",
"CASE_TABLE"."YRS_RESIDENCE" AS "YRS_RESIDENCE" FROM (' || v_case_data || ') CASE_TABLE ');
ls_append(v_tmp_lstmt, ' ) ');
create_table_from_query(v_tmp_lstmt);
v_2d_view := v_2d_temp_view;
----- End: Input Data Preparation -----
----- Start: Outlier Treatment Transformation -----
v_tmp_lstmt.ub := 0; -- initialize
v_2d_temp_view := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
ls_append(v_tmp_lstmt, 'CREATE VIEW ');
ls_append(v_tmp_lstmt, v_2d_temp_view);
ls_append(v_tmp_lstmt, ' AS ');
ls_append(v_tmp_lstmt, ' ( ');
ls_append(v_tmp_lstmt, 'SELECT
"AFFINITY_CARD",
( CASE WHEN "AGE" < -1.3 THEN -1.3
WHEN "AGE" >= -1.3 AND "AGE" <= 79.77 THEN "AGE"
WHEN "AGE" > 79.77 THEN 79.77
end) "AGE"
"BOOKKEEPING_APPLICATION",
"BULK_PACK_DISKETTES",
"COUNTRY_NAME",
"CUST_GENDER",
"CUST_INCOME_LEVEL",
"CUST_MARITAL_STATUS",
"DMR$CASE_ID",
"EDUCATION",
"FLAT_PANEL_MONITOR",
"HOME_THEATER_PACKAGE",
"HOUSEHOLD_SIZE",
"OCCUPATION",
"OS_DOC_SET_KANJI",
"Y_BOX_GAMES",
( CASE WHEN "YRS_RESIDENCE" < -1.7 THEN -1.7
WHEN "YRS_RESIDENCE" >= -1.7 AND "YRS_RESIDENCE" <= 10 THEN "YRS_RESIDENCE"
WHEN "YRS_RESIDENCE" > 10 THEN 10
end) "YRS_RESIDENCE"
FROM ');
ls_append(v_tmp_lstmt, v_2d_view);
ls_append(v_tmp_lstmt, ' ) ');
create_table_from_query(v_tmp_lstmt);
v_2d_view := v_2d_temp_view;
----- End: Outlier Treatment Transformation -----
----- Start: Missing Values Transformation -----
v_tmp_lstmt.ub := 0; -- initialize
v_2d_temp_view := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
ls_append(v_tmp_lstmt, 'CREATE VIEW ');
ls_append(v_tmp_lstmt, v_2d_temp_view);
ls_append(v_tmp_lstmt, ' AS ');
ls_append(v_tmp_lstmt, ' ( ');
ls_append(v_tmp_lstmt, 'SELECT
DECODE ( "AGE" , NULL,
39.23831 , "AGE" ) "AGE" ,
DECODE ( "YRS_RESIDENCE" , NULL,
4.128 , "YRS_RESIDENCE" ) "YRS_RESIDENCE" ,
DECODE ( "BOOKKEEPING_APPLICATION" , NULL,
''1'' , "BOOKKEEPING_APPLICATION" ) "BOOKKEEPING_APPLICATION" ,
DECODE ( "BULK_PACK_DISKETTES" , NULL,
''1'' , "BULK_PACK_DISKETTES" ) "BULK_PACK_DISKETTES" ,
DECODE ( "COUNTRY_NAME" , NULL,
''United States of America'' , "COUNTRY_NAME" ) "COUNTRY_NAME" ,
DECODE ( "CUST_GENDER" , NULL,
''M'' , "CUST_GENDER" ) "CUST_GENDER" ,
DECODE ( "CUST_INCOME_LEVEL" , NULL,
''J: 190,000 - 249,999'' , "CUST_INCOME_LEVEL" ) "CUST_INCOME_LEVEL" ,
DECODE ( "CUST_MARITAL_STATUS" , NULL,
''Married'' , "CUST_MARITAL_STATUS" ) "CUST_MARITAL_STATUS" ,
DECODE ( "EDUCATION" , NULL,
''HS-grad'' , "EDUCATION" ) "EDUCATION" ,
DECODE ( "FLAT_PANEL_MONITOR" , NULL,
''1'' , "FLAT_PANEL_MONITOR" ) "FLAT_PANEL_MONITOR" ,
DECODE ( "HOME_THEATER_PACKAGE" , NULL,
''1'' , "HOME_THEATER_PACKAGE" ) "HOME_THEATER_PACKAGE" ,
DECODE ( "HOUSEHOLD_SIZE" , NULL,
''3'' , "HOUSEHOLD_SIZE" ) "HOUSEHOLD_SIZE" ,
DECODE ( "OCCUPATION" , NULL,
''Exec.'' , "OCCUPATION" ) "OCCUPATION" ,
DECODE ( "OS_DOC_SET_KANJI" , NULL,
''0'' , "OS_DOC_SET_KANJI" ) "OS_DOC_SET_KANJI" ,
DECODE ( "Y_BOX_GAMES" , NULL,
''0'' , "Y_BOX_GAMES" ) "Y_BOX_GAMES" ,
"AFFINITY_CARD",
"DMR$CASE_ID"
FROM ');
ls_append(v_tmp_lstmt, v_2d_view);
ls_append(v_tmp_lstmt, ' ) ');
create_table_from_query(v_tmp_lstmt);
v_2d_view := v_2d_temp_view;
----- End: Missing Values Transformation -----
----- Start: Normalize Transformation -----
v_tmp_lstmt.ub := 0; -- initialize
v_2d_temp_view := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
ls_append(v_tmp_lstmt, 'CREATE VIEW ');
ls_append(v_tmp_lstmt, v_2d_temp_view);
ls_append(v_tmp_lstmt, ' AS ');
ls_append(v_tmp_lstmt, ' ( ');
ls_append(v_tmp_lstmt, 'SELECT
"BOOKKEEPING_APPLICATION",
"BULK_PACK_DISKETTES",
"COUNTRY_NAME",
"CUST_GENDER",
"CUST_INCOME_LEVEL",
"CUST_MARITAL_STATUS",
"EDUCATION",
"FLAT_PANEL_MONITOR",
"HOME_THEATER_PACKAGE",
"HOUSEHOLD_SIZE",
"OCCUPATION",
"OS_DOC_SET_KANJI",
"Y_BOX_GAMES",
"AFFINITY_CARD",
"DMR$CASE_ID",
LEAST(1, GREATEST(0, (ROUND(("AGE" - 17.0) / (79.77 - 17.0),15) * (1.0 - 0.0) + 0.0))) "AGE",
LEAST(1, GREATEST(0, (ROUND(("YRS_RESIDENCE" - 0.0) / (10.0 - 0.0),15) * (1.0 - 0.0) + 0.0))) "YRS_RESIDENCE"
FROM ');
ls_append(v_tmp_lstmt, v_2d_view);
ls_append(v_tmp_lstmt, ' ) ');
create_table_from_query(v_tmp_lstmt);
v_2d_view := v_2d_temp_view;
----- End: Normalize Transformation -----
----- Start: Stratified Split Transformation -----
v_tmp_lstmt.ub := 0; -- initialize
v_2d_temp_view := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
ls_append(v_tmp_lstmt, GENERATE_STRATIFIED_SQL(v_2d_temp_view, v_2d_view, TARGET_VALUES_LIST('"BOOKKEEPING_APPLICATION"',
'"BULK_PACK_DISKETTES"',
'"COUNTRY_NAME"',
'"CUST_GENDER"',
'"CUST_INCOME_LEVEL"',
'"CUST_MARITAL_STATUS"',
'"EDUCATION"',
'"FLAT_PANEL_MONITOR"',
'"HOME_THEATER_PACKAGE"',
'"HOUSEHOLD_SIZE"',
'"OCCUPATION"',
'"OS_DOC_SET_KANJI"',
'"Y_BOX_GAMES"',
'"AFFINITY_CARD"',
'"DMR$CASE_ID"',
'"AGE"',
'"YRS_RESIDENCE"'), '"AFFINITY_CARD"', 60, ' < ' ));
create_table_from_query(v_tmp_lstmt);
v_2d_view_build := v_2d_temp_view;
v_tmp_lstmt.ub := 0; -- initialize
v_2d_temp_view := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
ls_append(v_tmp_lstmt, GENERATE_STRATIFIED_SQL(v_2d_temp_view, v_2d_view, TARGET_VALUES_LIST('"BOOKKEEPING_APPLICATION"',
'"BULK_PACK_DISKETTES"',
'"COUNTRY_NAME"',
'"CUST_GENDER"',
'"CUST_INCOME_LEVEL"',
'"CUST_MARITAL_STATUS"',
'"EDUCATION"',
'"FLAT_PANEL_MONITOR"',
'"HOME_THEATER_PACKAGE"',
'"HOUSEHOLD_SIZE"',
'"OCCUPATION"',
'"OS_DOC_SET_KANJI"',
'"Y_BOX_GAMES"',
'"AFFINITY_CARD"',
'"DMR$CASE_ID"',
'"AGE"',
'"YRS_RESIDENCE"'), '"AFFINITY_CARD"', 60, ' >= ' ));
create_table_from_query(v_tmp_lstmt);
v_2d_view_test := v_2d_temp_view;
----- End: Stratified Split Transformation -----
----- Start: Mining Data Preparation -----
v_tmp_lstmt.ub := 0; -- initialize
v_2d_temp_view := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
ls_append(v_tmp_lstmt, 'CREATE VIEW ');
ls_append(v_tmp_lstmt, v_2d_temp_view);
ls_append(v_tmp_lstmt, ' AS ');
ls_append(v_tmp_lstmt, ' ( ');
ls_append(v_tmp_lstmt,
'SELECT caseTable."AFFINITY_CARD"
, caseTable."AGE"
, caseTable."BOOKKEEPING_APPLICATION"
, caseTable."BULK_PACK_DISKETTES"
, caseTable."COUNTRY_NAME"
, caseTable."CUST_GENDER"
, caseTable."CUST_INCOME_LEVEL"
, caseTable."CUST_MARITAL_STATUS"
, caseTable."DMR$CASE_ID"
, caseTable."EDUCATION"
, caseTable."FLAT_PANEL_MONITOR"
, caseTable."HOME_THEATER_PACKAGE"
, caseTable."HOUSEHOLD_SIZE"
, caseTable."OCCUPATION"
, caseTable."OS_DOC_SET_KANJI"
, caseTable."Y_BOX_GAMES"
, caseTable."YRS_RESIDENCE"
FROM ('); ls_append(v_tmp_lstmt, v_2d_view_build); ls_append(v_tmp_lstmt, ') caseTable
ls_append(v_tmp_lstmt, ' ) ');
create_table_from_query(v_tmp_lstmt);
v_2d_view_build := v_2d_temp_view;
v_tmp_lstmt.ub := 0; -- initialize
v_2d_temp_view := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
ls_append(v_tmp_lstmt, 'CREATE VIEW ');
ls_append(v_tmp_lstmt, v_2d_temp_view);
ls_append(v_tmp_lstmt, ' AS ');
ls_append(v_tmp_lstmt, ' ( ');
ls_append(v_tmp_lstmt,
'SELECT caseTable."AFFINITY_CARD"
, caseTable."AGE"
, caseTable."BOOKKEEPING_APPLICATION"
, caseTable."BULK_PACK_DISKETTES"
, caseTable."COUNTRY_NAME"
, caseTable."CUST_GENDER"
, caseTable."CUST_INCOME_LEVEL"
, caseTable."CUST_MARITAL_STATUS"
, caseTable."DMR$CASE_ID"
, caseTable."EDUCATION"
, caseTable."FLAT_PANEL_MONITOR"
, caseTable."HOME_THEATER_PACKAGE"
, caseTable."HOUSEHOLD_SIZE"
, caseTable."OCCUPATION"
, caseTable."OS_DOC_SET_KANJI"
, caseTable."Y_BOX_GAMES"
, caseTable."YRS_RESIDENCE"
FROM ('); ls_append(v_tmp_lstmt, v_2d_view_test); ls_append(v_tmp_lstmt, ') caseTable
ls_append(v_tmp_lstmt, ' ) ');
create_table_from_query(v_tmp_lstmt);
v_2d_view_test := v_2d_temp_view;
v_build_data := v_2d_view_build;
v_test_data := v_2d_view_test;
----- End: Mining Data Preparation -----
v_prior := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
EXECUTE IMMEDIATE 'CREATE TABLE ' || v_prior || ' (TARGET_VALUE VARCHAR2(4000), PRIOR_PROBABILITY NUMBER)';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_prior || ' VALUES (''0'', 0.25333333333333335)';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_prior || ' VALUES (''1'', 0.7466666666666666)';
COMMIT;
v_build_setting := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
EXECUTE IMMEDIATE 'CREATE TABLE ' || v_build_setting || ' (setting_name VARCHAR2(30), setting_value VARCHAR2(128))';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_build_setting || ' VALUES (''JDMS_TARGET_NAME'', ''"AFFINITY_CARD"'')';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_build_setting || ' VALUES (''SVMS_ACTIVE_LEARNING'', ''SVMS_AL_ENABLE'')';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_build_setting || ' VALUES (''JDMS_FUNCTION_TYPE'', ''CLASSIFICATION'')';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_build_setting || ' VALUES (''ALGO_NAME'', ''ALGO_SUPPORT_VECTOR_MACHINES'')';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_build_setting || ' VALUES (''SVMS_CONV_TOLERANCE'', ''0.0010'')';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_build_setting || ' VALUES (''CLAS_PRIORS_TABLE_NAME'', :priorTable)' USING v_prior;
COMMIT;
-- BUILD MODEL
DBMS_DATA_MINING.CREATE_MODEL(
model_name => model_name,
mining_function => dbms_data_mining.classification,
data_table_name => v_build_data,
case_id_column_name => v_case_id,
target_column_name => 'AFFINITY_CARD',
settings_table_name => v_build_setting);
v_test_cm := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
EXECUTE IMMEDIATE 'CREATE TABLE ' || v_test_cm || ' (actual_target_value VARCHAR2(4000), predicted_target_value VARCHAR2(4000), cost NUMBER)';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_test_cm || ' VALUES (''0'', ''0'', 0.0)';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_test_cm || ' VALUES (''0'', ''1'', 1.0)';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_test_cm || ' VALUES (''1'', ''0'', 1.0)';
EXECUTE IMMEDIATE 'INSERT INTO ' || v_test_cm || ' VALUES (''1'', ''1'', 0.0)';
COMMIT;
-- TEST MODEL
IF (test_metric_name IS NOT NULL) THEN
-- CREATE APPLY RESULT FOR TEST
v_apply_result := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
DBMS_DATA_MINING.APPLY(
model_name => model_name,
data_table_name => v_test_data,
case_id_column_name => v_case_id,
result_table_name => v_apply_result);
EXECUTE IMMEDIATE 'CREATE TABLE ' || test_metric_name || ' (METRIC_NAME VARCHAR2(30), METRIC_VARCHAR_VALUE VARCHAR2(31), METRIC_NUM_VALUE NUMBER)';
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_VARCHAR_VALUE) VALUES (''MODEL_NAME'', :model)' USING model_name;
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_VARCHAR_VALUE) VALUES (''TEST_DATA_NAME'', :test_data)' USING v_test_data;
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_VARCHAR_VALUE) VALUES (''MINING_FUNCTION'', ''CLASSIFICATION'')';
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_VARCHAR_VALUE) VALUES (''TARGET_ATTRIBUTE'', :target)' USING 'AFFINITY_CARD';
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_VARCHAR_VALUE) VALUES (''POSITIVE_TARGET_VALUE'', :target_value)' USING v_target_value;
COMMIT;
IF confusion_matrix_name IS NULL THEN
v_confusion_matrix := ADD_TEMP_TABLE(v_tempTables, create_new_temp_table_name('DM$T'));
ELSE
v_confusion_matrix := confusion_matrix_name;
END IF;
DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX (
accuracy => v_accuracy,
apply_result_table_name => v_apply_result,
target_table_name => v_test_data,
case_id_column_name => v_case_id,
target_column_name => 'AFFINITY_CARD',
confusion_matrix_table_name => v_confusion_matrix,
score_column_name => 'PREDICTION',
score_criterion_column_name => 'PROBABILITY',
cost_matrix_table_name => v_test_cm);
-- DBMS_OUTPUT.PUT_LINE('**** MODEL ACCURACY ****: ' || ROUND(accuracy, 4));
IF (confusion_matrix_name IS NOT NULL) THEN
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_NUM_VALUE) VALUES (''ACCURACY'', :accuracy)' USING v_accuracy;
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_VARCHAR_VALUE) VALUES (''CONFUSION_MATRIX_TABLE'', :confusion_matrix_name)' USING confusion_matrix_name;
COMMIT;
-- Average Accuracy
EXECUTE IMMEDIATE '
WITH
a as
(SELECT a.actual_target_value, sum(a.value) recall_total
FROM ' || confusion_matrix_name || ' a
group by a.actual_target_value)
b as
(SELECT count(distinct b.actual_target_value) num_recalls
FROM ' || confusion_matrix_name || ' b)
c as
(SELECT c.actual_target_value, value
FROM ' || confusion_matrix_name || ' c
where actual_target_value = predicted_target_value)
d as
(SELECT sum(c.value/a.recall_total) tot_accuracy
FROM a, c
where a.actual_target_value = c.actual_target_value)
SELECT d.tot_accuracy/b.num_recalls * 100 avg_accuracy
FROM b, d' INTO v_avg_accuracy;
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_NUM_VALUE) VALUES (''AVG_ACCURACY'', :avg_accuracy)' USING v_avg_accuracy;
COMMIT;
END IF;
-- Predictive Confidence
EXECUTE IMMEDIATE '
WITH
a as
(SELECT a.actual_target_value, sum(a.value) recall_total
FROM ' || v_confusion_matrix || ' a
group by a.actual_target_value)
b as
(SELECT count(distinct b.actual_target_value) num_classes
FROM ' || v_confusion_matrix || ' b)
c as
(SELECT c.actual_target_value, value
FROM ' || v_confusion_matrix || ' c
where actual_target_value = predicted_target_value)
d as
(SELECT sum(c.value/a.recall_total) tot_accuracy
FROM a, c
where a.actual_target_value = c.actual_target_value)
SELECT (1 - (1 - d.tot_accuracy/b.num_classes) / GREATEST(0.0001, ((b.num_classes-1)/b.num_classes))) * 100
FROM b, d' INTO v_predictive_confidence;
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_NUM_VALUE) VALUES (''PREDICTIVE_CONFIDENCE'', :predictive_confidence)' USING v_predictive_confidence;
COMMIT;
IF lift_result_name IS NOT NULL AND v_target_value IS NOT NULL THEN
DBMS_DATA_MINING.COMPUTE_LIFT (
apply_result_table_name => v_apply_result,
target_table_name => v_test_data,
case_id_column_name => v_case_id,
target_column_name => 'AFFINITY_CARD',
lift_table_name => lift_result_name,
positive_target_value => v_target_value,
num_quantiles => v_num_quantiles,
cost_matrix_table_name => v_test_cm);
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_VARCHAR_VALUE) VALUES (''LIFT_TABLE'', :lift_result_name)' USING lift_result_name;
COMMIT;
END IF;
IF roc_result_name IS NOT NULL AND v_target_value IS NOT NULL THEN
DBMS_DATA_MINING.COMPUTE_ROC (
roc_area_under_curve => v_area_under_curve,
apply_result_table_name => v_apply_result,
target_table_name => v_test_data,
case_id_column_name => v_case_id,
target_column_name => 'AFFINITY_CARD',
roc_table_name => roc_result_name,
positive_target_value => v_target_value,
score_column_name => 'PREDICTION',
score_criterion_column_name => 'PROBABILITY');
-- DBMS_OUTPUT.PUT_LINE('**** AREA UNDER ROC CURVE ****: ' || area_under_curve );
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_VARCHAR_VALUE) VALUES (''ROC_TABLE'', :roc_result_name)' USING roc_result_name;
EXECUTE IMMEDIATE 'INSERT INTO ' || test_metric_name || ' (METRIC_NAME, METRIC_NUM_VALUE) VALUES (''AREA_UNDER_CURVE'', :v_area_under_curve)' USING v_area_under_curve;
COMMIT;
END IF;
END IF;
DROP_TEMP_TABLES(v_tempTables);
EXCEPTION WHEN OTHERS THEN
DROP_TEMP_TABLES(v_tempTables);
RAISE;
END;
END;
/ -
Apex 4 error ORA-04042 procedure, function, package body does not exist
Hi all,
I was instaling Oracle Application Expres 10g on Linux ubuntu and I was download and unzip apex 4
on /usr/lib/oracle/xe/
then connect as SYS as sysdba with pass and
start
@/usr/lib/oracle/xe/apex/apexins SYSAUX SYSAUX TEMP /i/
installation starting
... after 5 minutes theres end of log file>
I. O R A C L E S Y S I N S T A L L P R O C E S S
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/dev_grants.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/core_grants.sql"
...CONNECT as the Oracle user who will own the APEX engine
Session altered.
III. I N S T A L L A P E X P A C K A G E S P E C S
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_plsql_editor.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_model_api.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_util.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_plugin_f4000.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_image_generator.sql"
Installing Team Development objects
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/team_tab.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team_api.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team_gen_api.sql"
Installing Application Migration Workshop objects
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_create_ddl.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_create_ddl.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_exporter_ins.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/mig_views.sql"
...installing Application Migration Workshop package spec
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_acc_load.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_load_xml.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_olb_load_xml.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_update_apx_app.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_utilities.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frmmenu_load_xml.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_rpt_load_xml.sql"
...install Application Migration Workshop package body
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_acc_load.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_load_xml.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_olb_load_xml.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_update_apx_app.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_utilities.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frmmenu_load_xml.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_rpt_load_xml.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_item_comps.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_translation_utilities.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy_lov.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy_item.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy_button.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_translation_utilities.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/seed.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/sync.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/layout.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_lov_used_on_pages.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_query_builder.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_sw_object_feed.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_load_data.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_load_excel_data.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy_metadata.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copyu.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_tab_mgr.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/generate_ddl.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/table_drill.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_download.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_copy_page.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/generate_table_api.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_gen_hint.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_xliff.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_create_model_app.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/apex_admin.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_help.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_data_quick_flow.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_theme_files.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_session_mon.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_sw_page_calls.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_wiz_confirm.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_page_map.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_drag_layout.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_dataload_xml.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/apex_ui_default_update.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/apex_mig_projects_update.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_install_wizard.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_dictionary.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_advisor.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_search.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_plugins.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_4000_ui.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_4050_ui.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_workspace_reports.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_p4150.sql"
timing for: Development Package Specs
Elapsed: 00:00:00.02
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_plsql_editor.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_model_api.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_util.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_plugin_f4000.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_image_generator.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/layout.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_query_builder.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_sw_object_feed.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_load_data.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_load_excel_data.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy_metadata.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copyu.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_tab_mgr.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/generate_ddl.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/table_drill.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_download.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_copy_page.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/generate_table_api.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_gen_hint.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_translation_utilities.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_xliff.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_create_model_app.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_help.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_data_quick_flow.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_theme_files.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_session_mon.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_sw_page_calls.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_wiz_confirm.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_page_map.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_drag_layout.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_dataload_xml.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/apex_ui_default_update.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/apex_mig_projects_update.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_install_wizard.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_dictionary.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_advisor.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_search.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_plugins.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_4000_ui.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_4050_ui.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_translation_utilities.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team_api.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team_gen_api.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_workspace_reports.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_p4150.plb"
...install demonstration Oracle APEX application package specs
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/collections_showcase.sql"
...install demonstration Oracle APEX application package bodies
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/collections_showcase.plb"
...install demonstration tables
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_demo_tab.sql"
timing for: Development Package Bodies
Elapsed: 00:00:00.03
grant execute on wwv_mig_acc_load to public
ERROR at line 1:
ORA-04042: procedure, function, package, or package body does not exist
is there any solution?
regards
GordanInstall 4.0 pass ok!
1. I was changing apexins.sql
as PREFIX='@/usr/lib/oracle/xe/apex/'
and add path to coreins.sql as @/usr/lib/oracle/xe/apex/coreins.sql
2. create two folders coreinscore and coreinsbuild and copy all files from folder core and folder build
3. copy and rename endins.sql as coreinsendins.sql
after 10 min instalation pass ok!
Gordan
Edited by: useruseruser on Jun 29, 2010 2:12 PM -
&& Substitution Variable in Package Body using SQL Developer
Hi Folks,
I've moved over to working to in SQL Developer (its a very early version - 1.0.0) from a combination of SQL*Plus command line and a text editor. I'm trying to get this upgrgraded, but I think the question will be the same with a newer version anyway.
I am creating a package, and in the package body I have some &&my_var substitutions that I was previoulsy prompted for when calling the .sql from the command line SQL*Plus. I need this as the variable needs to be different for the development and live environment.
When working in SQL Developer, I can load the package body from Connection->Packages->My Package->My Package Body, and click the edit button to edit the code, however, when I click the Compile button in the top of the window my code error's because of the substituion variablle. An example is:
CREATE OR REPLACE
PACKAGE BODY MY_PACKAGE AS
PROCEDURE MY_PROCEDURE
BEGIN
my_variable := &&my_function_from_live_or_dev_database
END MY_PROCEDURE
Can anyone tell me if there is a way of defining a compiler variable within the IDE widow while editing a package body stored in the database, without manually copying the code into the Worksheet and running it as a script?
Thanks,
AM953104 wrote:
Thanks for the reply, the code was just quickly typed to show the sort of thing I am doing, it wasn't actual code form my project.
I've come from a C background so what I would have done would be create a #define and changed to when on live or development - or passed the variable to the build environment from the IDE or makefiles and the change would have reflected through my whole project.
What I want to be able to do is alter a definition of some sort that will reflect throughout my whole project, so I can change it in one location to minimize code changes before going live. I don't really want to be prompted at all. On one system it needs to be DEV_10 and on the other it needs to be LIVE_10.Is there a possibility to elimiante this difference at all?
For example if DEV_10 is the oracle schemauser on the development database and LIVE_10 would be the one on the production system. THen you could just remove all references to the schema from your code.
IF you are already connected to this schema, then you don't need to specify the schema name anymore.
example
instead of
create or replace package dev_10.myPackage
...you can simply use
create or replace package myPackage
...If needed you can alter the cuurently connected user just before you run the script.
alter session set current_schema = LIVE10;
create or replace package myPackage
...This would be a different working window in the developer (script worksheet, instead of direct pl/sql editor).
Substitution variables are allowed there. -
Expdp with ORA-04063: package body "SYS.DBMS_CUBE_EXP" error
Hi,
I try to use expdp to export all tables from schema BAW, but hit the following error. Oracle version is 11.2.0.2, and the package body "SYS.DBMS_CUBE_EXP" is invalid. Any idea to fix it?
Starting "BAW"."SYS_EXPORT_SCHEMA_01": baw/******** directory=DATA_PUMP_DIR met
rics=yes schemas=baw dumpfile=baw.dmp
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.GET_TABLE_DATA_OBJECTS [
ORA-31642: the following SQL statement fails:
BEGIN "SYS"."DBMS_CUBE_EXP".SCHEMA_CALLOUT(:1,0,1,'11.02.00.02.00'); END;
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "SYS.DBMS_METADATA", line 1245
ORA-04063: package body "SYS.DBMS_CUBE_EXP" has errors
ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_CUBE_EXP"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "SYS.KUPW$WORKER", line 8353
----- PL/SQL Call Stack -----
object line object
handle number name
7000004c9656fe0 19208 package body SYS.KUPW$WORKER
7000004c9656fe0 8385 package body SYS.KUPW$WORKER
7000004c9656fe0 12748 package body SYS.KUPW$WORKER
7000004c9656fe0 2546 package body SYS.KUPW$WORKER
7000004c9656fe0 9054 package body SYS.KUPW$WORKER
7000004c9656fe0 1688 package body SYS.KUPW$WORKER
7000004c9659720 2 anonymous block
object line object
handle number name
7000004c9656fe0 19208 package body SYS.KUPW$WORKER
7000004c9656fe0 8385 package body SYS.KUPW$WORKER
7000004c9656fe0 12748 package body SYS.KUPW$WORKER
7000004c9656fe0 2546 package body SYS.KUPW$WORKER
7000004c9656fe0 9054 package body SYS.KUPW$WORKER
7000004c9656fe0 1688 package body SYS.KUPW$WORKER
7000004c9659720 2 anonymous block
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.GET_TABLE_DATA_OBJECTS [
ORA-31642: the following SQL statement fails:
BEGIN "SYS"."DBMS_CUBE_EXP".SCHEMA_CALLOUT(:1,0,1,'11.02.00.02.00'); END;
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "SYS.DBMS_METADATA", line 1245
ORA-04063: package body "SYS.DBMS_CUBE_EXP" has errors
ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_CUBE_EXP"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "SYS.KUPW$WORKER", line 8353
----- PL/SQL Call Stack -----
object line object
handle number name
7000004c9656fe0 19208 package body SYS.KUPW$WORKER
7000004c9656fe0 8385 package body SYS.KUPW$WORKER
7000004c9656fe0 12748 package body SYS.KUPW$WORKER
7000004c9656fe0 2546 package body SYS.KUPW$WORKER
7000004c9656fe0 9054 package body SYS.KUPW$WORKER
7000004c9656fe0 1688 package body SYS.KUPW$WORKER
7000004c9659720 2 anonymous block
Job "BAW"."SYS_EXPORT_SCHEMA_01" stopped due to fatal error at 16:07:26
eThe simple solution to this problem is, and its working perfectly with me on 11gR2 resolving the subject error.
To avoid this problem, perform relational exports excluding OLAP's Analytic Workspaces.
1) Remove workspace package from export:
a. Connect sys/password as sysdba
b. create table sys.exppkgact$_backup as select * from sys.exppkgact$;
(Backup package before deleting it)
c. delete from sys.exppkgact$ where package = 'DBMS_CUBE_EXP' and schema= 'SYS';
d. commit;
4) Run the export. -
Apex new installation - HTP package body has errors
I installed apex on 10G. When i try to access the apex page, i get the following errors in log:
[Sat Oct 28 08:39:25 2006] [error] [client 192.168.1.90] [ecid: 1162049964:156.153.112.151:9580:0:9,0] mod_plsql: /pls/apex/apex HTTP-404 ORA-04063: package body "SYS.HTP" has errors\nORA-06508: PL/SQL: could not find program unit being called: "SYS.HTP"\nORA-06512: at line 7\n
When i recompile HTP package body, i get errors:
SQL> alter package htp compile body;
Warning: Package Body altered with compilation errors.
SQL> sho errors
Errors for PACKAGE BODY HTP:
LINE/COL ERROR
14/11 PLS-00323: subprogram or cursor 'TITLE' is declared in a package
specification and must be defined in the package body
15/11 PLS-00323: subprogram or cursor 'HTITLE' is declared in a package
specification and must be defined in the package body
1691/7 PL/SQL: Statement ignored
1691/7 PLS-00307: too many declarations of 'PRINT' match this call
1694/7 PL/SQL: Statement ignored
1694/7 PLS-00307: too many declarations of 'PRINT' match this call
1697/7 PL/SQL: Statement ignored
1697/7 PLS-00307: too many declarations of 'PRN' match this call
1700/7 PL/SQL: Statement ignored
1700/7 PLS-00307: too many declarations of 'PRN' match this call
1703/7 PL/SQL: Statement ignored
1703/7 PLS-00307: too many declarations of 'PRINT' match this call
1706/7 PL/SQL: Statement ignored
1706/7 PLS-00307: too many declarations of 'PRINT' match this call
1709/7 PL/SQL: Statement ignored
1709/7 PLS-00307: too many declarations of 'P' match this call
1712/7 PL/SQL: Statement ignored
1712/7 PLS-00307: too many declarations of 'P' match this call
1715/7 PL/SQL: Statement ignored
1715/7 PLS-00307: too many declarations of 'P' match this call
Any ideas...Please tell us your first name and update your forum profile with it to help us. Also, change your handle to something more reader-friendly. Thanks.
If your imported applications are set up to use some kind of SSO authenticaiton and you haven't provided for that in your environment then you'll need to change those applications' authentication scheme to something you can deal with.
Scott -
ORA-04063:package body "APPS.AP_UTILITIES_PKG" has errors
Hi,
AP_UTILITIES_PKG is showing invalid status.when i m trying to compile giving below error.
SQL> show error
Errors for PACKAGE BODY AP_UTILITIES_PKG:
LINE/COL ERROR
1033/9 PL/SQL: Statement ignored
1033/21 PLS-00905: object APPS.FND_FLEX_KEY_API is invalid
1046/9 PL/SQL: Statement ignored
1046/22 PLS-00905: object APPS.FND_FLEX_KEY_API is invalid
1059/9 PL/SQL: Statement ignored
1059/22 PLS-00905: object APPS.FND_FLEX_KEY_API is invalid
1421/9 PL/SQL: Statement ignored
1421/21 PLS-00905: object APPS.FND_FLEX_KEY_API is invalid
1434/9 PL/SQL: Statement ignored
1434/21 PLS-00905: object APPS.FND_FLEX_KEY_API is invalid
1447/9 PL/SQL: Statement ignored
What i know there is a synonym FND_FLEX_VALUE_SET this synonym dropped After that many forms of the application is getting error.when i m trying to create as below it is saying "cannot create a synonym with same name as object"
It is PRODUCTION issue kindly update me it would be appreciated
Thanks
Edited by: userpat on Jul 18, 2010 5:49 AMissue occured: EBS 12.0.3 AIX 5.3 DB 10.2.0.2
select owner,object_name,object_type from dba_objects where object_name like 'FND_FLEX_VALUE_SET%'
OWNER OBJECT_NAME OBJECT_TYPE
APPLSYS FND_FLEX_VALUE_SETS_S SEQUENCE
APPS FND_FLEX_VALUE_SETS_S SYNONYM
APPLSYS FND_FLEX_VALUE_SETS TABLE
APPLSYS FND_FLEX_VALUE_SETS_U1 INDEX
APPLSYS FND_FLEX_VALUE_SETS_U2 INDEX
FYI there are two test server for above because of power failure the system went down so i m not able to connect right now so find below output of other PRODUCTION instance that is 11.5.9 AIX 5.2 DB 9.2.0.4
select owner,object_name,object_type from dba_objects where object_name like 'FND_FLEX_VALUE_SET%'
OWNER OBJECT_NAME OBJECT_TYPE
APPLSYS FND_FLEX_VALUE_SETS TABLE
APPLSYS FND_FLEX_VALUE_SETS_S SEQUENCE
APPLSYS FND_FLEX_VALUE_SETS_U1 INDEX
APPLSYS FND_FLEX_VALUE_SETS_U2 INDEX
APPS FND_FLEX_VALUE_SETS SYNONYM
APPS FND_FLEX_VALUE_SETS_S SYNONYM
Kindly update me -
Error to PACKAGE BODY WWSSO_AUTH_EXTERNAL
hi to all,
i followed the paper 'Configuring Oracle9iAS Portal for LDAP
Authentication' in order to redirect authentication Login Server
to OID.
After all steps i have to run ssoldap.sql from sqlplus.
Firstly, i got this errors (when the sql file called to package
ssoxldap.pkb):
Errors to PACKAGE BODY WWSSO_AUTH_EXTERNAL:
LINE/COL ERROR
0/0 PL/SQL: Compilation unit analysis terminated
1/14 PLS-00201: identity 'WWSSO_AUTH_EXTERNAL' must be
declared
1/14 PLS-00304: if would not compile the body
'WWSSO_AUTH_EXTERNAL' without its specification.
after those errors it ask me for ldap configuration.
if i filled out all the info it will show, afterwards, the same
error.
going to portal... works fine .. but the authentication does not
redirect to oid.
any suggestions will be appreciated,
thanks in advance,
marcosHello Marcos
Oracle Corporation recommends that you use ssoxoid.pkb
package if you are using Oracle 8i (8.1.7) or later
wbr -
Errors for PACKAGE BODY WWV_FLOW_CUSTOM_AUTH_SSO
Hi All,
Running the below package so I can configure SSO...running into the below error.
Any help is appreciated
SQL> @custom_auth_sso_902.plb;
...wwv_flow_custom_auth_sso
Warning: Package Body created with compilation errors.
Errors for PACKAGE BODY WWV_FLOW_CUSTOM_AUTH_SSO:
LINE/COL ERROR
0/0 PL/SQL: Compilation unit analysis terminated
1/14 PLS-00304: cannot compile body of 'WWV_FLOW_CUSTOM_AUTH_SSO'
without its specificationYou need to ask Apex related questions in the Apex forum.
Include the 4 digit Oracle and Apex versions you are using when you post your problem.
I assume that you have read how to implement SSO for Apex applications to be partner applications for Oracle App Server single sign-on authentication? If not, I suggest that you search http://tahiti.oracle.com for the relevant instructions. (cannot recall the exact manual reference - I did this 3 or 4 years ago myself) -
EA 3.0 returns error on compiling of package body
Hi,
I got the following error
Error: ORA-06550: line 1, column 64:
PLS-00172: string literal too long
when I was trying to compile package body.
In previous version of SQL DEV the package is compiled without any problems.
I have a procedure in package with more than 120 parameters.
Edited by: user635344 on Oct 15, 2010 10:54 AMThis problem is a bug : SQL*Developer 3EA1 - Not Compiling package Body
regards Karsten -
Package body "SYS.PRVT_HDM" has errors
Hello.
Each hour, i have this message in my alert log:
"~Errors in file d:\oracle\admin\lgyp\bdump\lgyp_m001_7968.trc:~ORA-00604: error occurred at recursive SQL level 1~ORA-04063: package body "SYS.PRVT_HDM" has errors~ORA-06508: PL/SQL: could not find program unit being called: "SYS.PRVT_HDM"~ORA-06512: at line 1~"
Could somebody help me?Thanks for your help
After execution of prvthdm.plb:
Erreurs pour PACKAGE BODY PRVT_HDM :
LINE/COL ERROR
95/7 PL/SQL: Statement ignored
95/7 PLS-00905: l'objet SYS.PRVT_ADVISOR n'est pas valide
99/7 PL/SQL: Statement ignored
99/7 PLS-00905: l'objet SYS.PRVT_ADVISOR n'est pas valide
100/7 PL/SQL: Statement ignored
100/7 PLS-00905: l'objet SYS.PRVT_ADVISOR n'est pas valide
101/7 PL/SQL: Statement ignored
101/7 PLS-00905: l'objet SYS.PRVT_ADVISOR n'est pas valide
103/7 PL/SQL: Statement ignored
103/7 PLS-00905: l'objet SYS.PRVT_ADVISOR n'est pas valide
106/7 PL/SQL: Statement ignored
106/7 PLS-00905: l'objet SYS.PRVT_ADVISOR n'est pas valide
112/11 PL/SQL: Statement ignored
112/25 PLS-00905: l'objet SYS.PRVT_ADVISOR n'est pas valide
458/5 PL/SQL: SQL Statement ignored
460/12 PL/SQL: ORA-01775: bouclage de chaînes de synonymes
464/5 PL/SQL: SQL Statement ignored
466/12 PL/SQL: ORA-01775: bouclage de chaînes de synonymes
470/5 PL/SQL: SQL Statement ignored
472/12 PL/SQL: ORA-01775: bouclage de chaînes de synonymes
Avertissement : Corps de type créé avec erreurs de compilation. -
SQL*Developer 3EA1 - Not Compiling package Body
Don't know if this is best place to post this, if not tell me where.
In some packages i'm getting: Error: ORA-06550: linha 1, coluna 64:PLS-00172: literal de cadeia de caracteres demasiado extenso; Sorry about the portuguese error message but it's cpopy paste from compiler log.
The strange about this is that the package is compiling with no errors on Version 2.1.1.64 and also on others editors. In both packages i had this was after formatting the code.
So far is the only bug i got, keep on the good work.
António CunhaJust tried from pl/sql node. The package body does not compile from there either. The issue seems to be the size of the package. The package size is 35,000 characters and spaces. I can remove any combination of source lines to get it down to 32,000 characters and spaces and it will compile.
Edited by: dagtech on Oct 21, 2010 9:34 AM
Maybe you are looking for
-
How to get songs off my iPod?
ok, I recently had to reformat my PC, and was expecting to be able to get my songs off my iPod, is there any way to do this?
-
Implementing session handling in servlet controller
how to implementing session handling in servlet controller. instead of writing isNew() in every jsp page i wanted to write in my central controller ,where each request is passing through controller. can any body give me the solution
-
Adobe AIR 2.0 Major Bug
Hello, We have an application built in Adobe AIR (HTML and Javascript Based). It's been running for 14 months now with no problems. Adobe came out with the AIR 2.0 version, and because the updates are pushed automaticaly to the clients, we started to
-
Why new OS share function still limited for What's App and FB? Did BlackBerry don't care Asia market or China , HK market ! Maybe We Chat are stupid do not open their SDK for BlackBerry...
-
Referencing "Form Variables" in Formcalc
WIth LiveCycle Designer ES4 I'm trying to place a group of string variables used throughout my form so as not to have to edit the same variables in several places. I don't want to use Form Properties>Variables because one can't see the entire group a