Dear Team, I am getting the below error for function, please see the bold line in "Function code", please suggest what I will do to correct this code.
----------------------- ERROR: syntax error at or near "*" LINE 35: SELECT * from logError(msg text) is ^ CONTEXT: invalid type name "* from logError(msg text) is BEGIN insert into SMERROR_LOG (error_message, error_log_id, method_name, subscriber_id, company_id, creation_date, creation_user, update_date, update_user) values(msg, nextval('smerror_log_sequence'), 'Gen_Budget_Periods_ALL_ForYear',subscriberID, companyID, LOCALTIMESTAMP, 'Admin', LOCALTIMESTAMP, 'Admin')" ********** Error ********** ERROR: syntax error at or near "*" SQL state: 42601 Character: 1276 Context: invalid type name "* from logError(msg text) is BEGIN insert into SMERROR_LOG (error_message, error_log_id, method_name, subscriber_id, company_id, creation_date, creation_user, update_date, update_user) values(msg, nextval('smerror_log_sequence'), 'Gen_Budget_Periods_ALL_ForYear',subscriberID, companyID, LOCALTIMESTAMP, 'Admin', LOCALTIMESTAMP, 'Admin')" -------------- *Function Code as below:* ---------------------------------------------------------------------------------------------------------------------------------------------------------- -- Function: cp_property_room_count_trans(bigint, bigint, text) -- DROP FUNCTION cp_property_room_count_trans(bigint, bigint, text); CREATE OR REPLACE FUNCTION cp_property_room_count_trans( subscriberid bigint, incompanyid bigint, loginname text) RETURNS void AS $BODY$ DECLARE CRS_1 CURSOR FOR SELECT distinct company_id from CP_ROOM_COUNT_STAGING where subscriber_id=subscriberID and (process_flag is null or process_flag=0) order by company_id; --Version: -- 05/16/07 (Bea) transformed data from CP_ROOM_COUNT_STAGING -- into CP_ROOM_TYPE_COUNT and CP_PROPERTY_PHASE tables -- 06/08/07 (Bea) insert value for CP_ROOM_TYPE_COUNT.room_budget_home_amt -- If phaseID is new, validate that these as required fields :CORP_PHASE_ID, PHASE_DESCRIPTION or PHASE_START_DATE -- Will set process_flag=2 if fail the validation. -- CP_PROPERTY_PHASE.PHASE_1_CODE field must be populated per business rule 15327 -- RW_1 RECORD; --CRS_1 %ROWTYPE; err_msg_1 varchar(100); v_errorMessage_1 varchar(4000); sucessfulRecCount bigint :=0; failedRecCount bigint :=0; * --************************************************************ SELECT logError(v_errorMesg text, procedureName text, subscriberID bigint, companyID bigint, supplierSku text, loginName text) is BEGIN insert into SMERROR_LOG (error_message, method_name, system_message, error_log_id, subscriber_id, company_id, creation_date, creation_user, update_date, update_user) values(v_errorMesg, procedureName, supplierSku, nextval('smerror_log_sequence'), subscriberID, companyID, LOCALTIMESTAMP, loginName, LOCALTIMESTAMP, 'V7Admin'); end;* * --************************************************************* FUNCTION Invoke_InsertPropertyRCProcess(subID in number, compID in number, loginName in varchar2) is CRS CURSOR FOR SELECT st.*, st.rowid, ph.project_code from CP_ROOM_COUNT_STAGING st, CP_PROJECT_PHASE ph where st.SUBSCRIBER_ID =subID and st.company_id=compID and (st.process_flag is null or st.process_flag=0) and ph.SUBSCRIBER_ID(+)= st.SUBSCRIBER_ID AND ph.PHASE_ID(+)= st.CORP_PHASE_ID order by st.subscriber_id, st.company_id, st.phase_id; RW CRS%ROWTYPE; err_msg varchar2(100); v_errorMessage varchar2(4000); v_errorCountExp number :=0; MAX_ERR_WRITTEN constant number :=10; recCount number := 0; checkCount number; startRowCounter number :=0; isValidated boolean :=true; begin logError('Begin Invoke_InsertPropertyRCProcess subID:'|| subID || ' and compID:'||compID,'Invoke_InsertPropertyRCProcess', subID, compID,null, loginName); -- the row_number counter starting number select max(Row_number) into startRowCounter from CP_ROOM_TYPE_COUNT where subscriber_id=subID and company_id=compID; if(startRowCounter is null) then startRowCounter :=0; end if; open CRS; loop begin -- the begin inside the loop fetch CRS into RW; IF NOT FOUND THEN EXIT; END IF; -- apply on CRS recCount := recCount+1; startRowCounter := startRowCounter+1; --check to if phase_id already existed in CP_PROPERTY_PHASE if not insert select count(1) into checkCount from CP_PROPERTY_PHASE where subscriber_id=subID and company_id=compID and PHASE_ID=RW.PHASE_ID; isValidated := true; --check to see if pass validation. if(checkCount =0 and (RW.phase_start_date is null or RW.phase_description is null or RW.corp_phase_id is null)) then isValidated:=false; --update processing flag to 2 as fail. update CP_ROOM_COUNT_STAGING set process_flag=2 where rowid=RW.rowid; failedRecCount := failedRecCount+1; end if; if(isValidated = true) then if(checkCount =0 ) then -- if phase_id not yet existed in the cp_property_phase table insert into cp_property_phase (subscriber_id, company_id, phase_id, phase_seq, phase_description, corp_phase_id, phase_start_date, duration_type, phase_status, po_created_flag, project_code, phase_level_path, is_deleted, phase_1_code, creation_date, creation_user) values (subID, compID, RW.phase_id, RW.phase_id, RW.phase_description, RW.corp_phase_id, RW.phase_start_date, 'W', 0, 0, RW.project_code, RW.phase_id, 0, lpad(to_char(RW.phase_id),5,'0')||' '||upper(substring(RW.phase_description from 1 for 40)), LOCALTIMESTAMP, loginName); end if;--if(checkCount =0 ) --insert into CP_ROOM_TYPE_COUNT table insert into cp_room_type_count (subscriber_id, company_id, phase_id, room_type_code, room_count, room_measure_unit, room_length, room_width, room_height, bath_length, bath_width, row_number, room_budget_home_amt, creation_date, creation_user) values (subID, compID, RW.phase_id, RW.room_type_code, RW.room_count, RW.room_measure_unit, RW.room_length, RW.room_width, RW.room_height, RW.bath_length, RW.bath_width, startRowCounter, RW.room_budget_home_amt, LOCALTIMESTAMP, loginName); --update processing flag to 1 as successful. update CP_ROOM_COUNT_STAGING set process_flag=1 where rowid=RW.rowid; sucessfulRecCount := sucessfulRecCount +1; if(mod(recCount, 500) = 0 ) then commit; end if; end if; -- if(isValidated = true) exception when others then if(v_errorCountExp < MAX_ERR_WRITTEN) then err_msg := substring(SQLERRM from 1 for 100); v_errorMessage:= 'Run into Exception in Invoke_InsertPropertyRCProcess: ' || err_msg; logError(v_errorMessage, 'Invoke_InsertPropertyRCProcess', subID, compID,null, loginName); end if; v_errorCountExp := v_errorCountExp+1; commit; end; --for inside begin end loop; close CRS; if( failedRecCount > 0) then logError('Error: set cp_room_count_staging.process_flag=2 ( Failed to insert new records dued to one of these required fields are empty: Corp Phase ID, Phase Desc or Phase Start Date)','Invoke_InsertPropertyRCProcess', subID, compID,null, loginName); end if; logError('Ending Invoke_InsertPropertyRCProcess Total records: '||recCount|| '. There are ' || sucessfulRecCount || ' sucessfull and ' || failedRecCount ||' failed records.','Invoke_InsertPropertyRCProcess', subID, compID,null, loginName); commit; end Invoke_InsertPropertyRCProcess; --************************************************************ begin logError('Begin CP_Property_Room_Count_Trans ','CP_Property_Room_Count_Trans', subscriberID, inCompanyID,null, loginName); open CRS_1; loop begin -- the begin inside the loop fetch CRS_1 into RW_1; IF NOT FOUND THEN EXIT; END IF; -- apply on CRS_1 sucessfulRecCount := 0; failedRecCount := 0; Invoke_InsertPropertyRCProcess(subscriberID, RW_1.company_ID, loginName); exception when others then err_msg_1 := substring(SQLERRM from 1 for 100); v_errorMessage_1:= 'Run into Exception in CP_Property_Room_Count_Trans: ' || err_msg_1; logError(v_errorMessage_1, 'CP_Property_Room_Count_Trans', subscriberID, inCompanyID,null, loginName); commit; end; --for inside begin end loop; close CRS_1; logError('Ending CP_Property_Room_Count_Trans.','CP_Property_Room_Count_Trans', subscriberID, inCompanyID,null, loginName); commit; END; $BODY$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER COST 100; ALTER FUNCTION cp_property_room_count_trans(bigint, bigint, text) OWNER TO postgres; ----------------------------------------------------------------------------------------------------------------------------