Rem drv: Rem Rem $Header: textManager_pkgbodys.sql 03-jul-2006.01:57:38 ganessub Exp $ Rem Rem textManager_pkgbodys.sql Rem Rem Copyright (c) 2006, Oracle. All rights reserved. Rem Rem NAME Rem textManager_pkgbodys.sql - Rem Rem DESCRIPTION Rem Rem Rem NOTES Rem Rem Rem MODIFIED (MM/DD/YY) Rem ganessub 06/26/06 - Created Rem CREATE OR REPLACE PACKAGE body MGMT_TEXT AS -- Package level Type Definition TYPE cursorType IS REF CURSOR; /* Store a log entry for a text index. If appendMode is true then the log start time will not be overwritten if the log record already exist. */ procedure addTextLog( i_indexName IN VARCHAR2, i_schemaName IN VARCHAR2, i_targetName IN VARCHAR2, i_targetType IN VARCHAR2, i_logDir IN VARCHAR2, i_logFile IN VARCHAR2, i_appendMode IN BOOLEAN, i_actionType IN VARCHAR2 ) IS v_textGUID RAW(50); v_targetGUID RAW(16); v_logFound BOOLEAN; v_startDate MGMT_TEXTINDEX_LOGS_INFO.START_DATE%TYPE; v_sysDate MGMT_TEXTINDEX_LOGS_INFO.START_DATE%TYPE; BEGIN v_textGUID := NULL; v_targetGUID := NULL; v_logFound := FALSE; --getTarget GUID BEGIN SELECT TARGET_GUID INTO v_targetGUID FROM mgmt_targets WHERE TARGET_NAME = i_targetName AND TARGET_TYPE = i_targetType; EXCEPTION WHEN NO_DATA_FOUND THEN raise MGMT_GLOBAL.target_does_not_exist; END; createUniqueTextIndexRecord(i_indexName,i_schemaName,v_targetGUID,v_textGUID); /*IF v_textGUID IS NULL THEN raise; END IF; */ SELECT SYSDATE INTO v_sysDate FROM DUAL; v_startDate := v_sysDate; DBMS_OUTPUT.put_line('before lock'); BEGIN SELECT START_DATE INTO v_startDate FROM MGMT_TEXTINDEX_LOGS_INFO WHERE TEXTINDEX_GUID = v_textGUID AND LOG_DIRECTORY = i_logDir AND LOG_FILE = i_logFile FOR UPDATE; v_logFound := TRUE; EXCEPTION WHEN NO_DATA_FOUND THEN v_logFound := FALSE; END; DBMS_OUTPUT.put_line('after lock'); --if append mode is true then keep the old start date IF i_appendMode = FALSE THEN v_startDate := v_sysDate; END IF; IF v_logFound THEN DBMS_OUTPUT.put_line('updating log'); UPDATE MGMT_TEXTINDEX_LOGS_INFO SET LOG_DIRECTORY = i_logDir, LOG_FILE = i_logFile, START_DATE = v_startDate WHERE TEXTINDEX_GUID = v_textGUID AND LOG_DIRECTORY = i_logDir AND LOG_FILE = i_logFile; ELSE DBMS_OUTPUT.put_line('inserting log'); INSERT INTO MGMT_TEXTINDEX_LOGS_INFO(TEXTINDEX_GUID,LOG_DIRECTORY,LOG_FILE,START_DATE,TEXTINDEX_ACTION_TYPE) VALUES (v_textGUID,i_logDir,i_logFile,v_startDate,i_actionType); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; raise; END addTextLog; procedure createUniqueTextIndexRecord( i_indexName IN VARCHAR2, i_schemaName IN VARCHAR2, i_targetGUID IN RAW, o_textIndexGUID OUT RAW) IS v_textGUID RAW(50); BEGIN v_textGUID := NULL; BEGIN SELECT TEXTINDEX_GUID INTO v_textGUID FROM mgmt_textindex WHERE TEXTINDEX_NAME = i_indexName AND TEXTINDEX_SCHEMA_NAME = i_schemaName AND TARGET_GUID = i_targetGUID; EXCEPTION WHEN NO_DATA_FOUND THEN SELECT SYS_GUID() INTO v_textGUID FROM DUAL; INSERT INTO mgmt_textindex(TEXTINDEX_GUID,TARGET_GUID,TEXTINDEX_NAME,TEXTINDEX_SCHEMA_NAME) VALUES(v_textGUID,i_targetGUID,i_indexName,i_schemaName); END; COMMIT; o_textIndexGUID := v_textGUID; EXCEPTION WHEN OTHERS THEN ROLLBACK; raise; END createUniqueTextIndexRecord; end MGMT_TEXT; / show errors;