1

This my (削除) pl/sql (削除ここまで) PL/pgSQL function. I am facing syntax error in this function. Can you please help me to solve this problem.

ERROR: syntax error at or near "2ドル"
LINE 1: SELECT 1ドル FOR 2ドル IN(select abl.ka003_position_lk_id as ...
 ^
QUERY: SELECT 1ドル FOR 2ドル IN(select abl.ka003_position_lk_id as posit, sum(abl.nooflabors*abl.hours) as totalhours from ahcc_boq_labor abl where ahcc_boq_item_id= 3ドル group by abl.ka003_position_lk_id) LOOP 4ドル = 5ドル 
CONTEXT: SQL statement in PL/PgSQL function "ahcc_proj_budget_cpy_plan1" near line 83
********** Error **********
ERROR: syntax error at or near "2ドル"
SQL state: 42601
Context: SQL statement in PL/PgSQL function "ahcc_proj_budget_cpy_plan1" near line 83

Here is my code:

CREATE OR REPLACE FUNCTION ahcc_proj_budget_cpy_plan1(p_pinstance_id character varying)
 RETURNS void AS
$BODY$ DECLARE 
v_Process CHAR(1);
v_project_id VARCHAR(32);
v_projbudget VARCHAR(32);
v_client VARCHAR(32);
v_petty NUMERIC;
v_org VARCHAR(32);
v_mrl NUMERIC;
v_hr NUMERIC;
v_eqp NUMERIC;
v_createdby VARCHAR(32);
v_updatedby VARCHAR(32);
v_record_id VARCHAR(32); 
v_ResultStr VARCHAR(120);
v_status VARCHAR(32);
v_message VARCHAR(255);
v_userid VARCHAR(32);
v_wbs_id VARCHAR(32);
v_boq_id VARCHAR(32);
v_boqitem_id VARCHAR(32);
v_positionId VARCHAR(255);
v_totalhours VARCHAR(255);
v_mproduct_id VARCHAR(255);
v_quantity VARCHAR(255);
v_hours VARCHAR(255);
v_material VARCHAR(255);
v_mquantity VARCHAR(255);
Cur_boq RECORD;
Cur_wbs RECORD;
Cur_hr RECORD;
Cur_eqp RECORD;
Cur_mrl RECORD;
 BEGIN
 -- Update AD_PInstance by setting IsProcessing='Y'
 RAISE NOTICE '%','Updating PInstance - Processing ' || p_PInstance_ID ;
 PERFORM AD_UPDATE_PINSTANCE(p_PInstance_ID, NULL, 'Y', NULL, NULL) ;
 BEGIN 
 select record_id,ad_user_id into v_record_id,v_userid from ad_pinstance where ad_pinstance_id=p_PInstance_ID;
 select ahcc_project_id,ahcc_proj_budget_id, AD_CLIENT_ID, AD_ORG_ID,
 CREATEDBY, UPDATEDBY,process 
 into v_project_id,v_projbudget,v_client,v_org,v_createdby,v_updatedby,v_process
 from ahcc_proj_budget where ahcc_proj_budget_id=v_Record_ID;
 update ahcc_proj_budget set process='N' where Process='Y';
 select count(*) into v_mrl from ahcc_proj_budget_mrl where ahcc_proj_budget_id=v_record_id;
 select count(*) into v_hr from ahcc_proj_budget_hr where ahcc_proj_budget_id=v_record_id;
 select count(*) into v_eqp from ahcc_proj_budget_eqp where ahcc_proj_budget_id=v_record_id;
 IF (v_mrl<>0 OR v_hr<>0 OR v_eqp<>0) THEN
 delete from ahcc_proj_budget_mrl where ahcc_proj_budget_id=v_record_id;
 delete from ahcc_proj_budget_hr where ahcc_proj_budget_id=v_record_id;
 delete from ahcc_proj_budget_eqp where ahcc_proj_budget_id=v_record_id;
 END IF;
 select count(*) into v_mrl from ahcc_proj_budget_mrl where ahcc_proj_budget_id=v_record_id;
 select count(*) into v_hr from ahcc_proj_budget_hr where ahcc_proj_budget_id=v_record_id;
 select count(*) into v_eqp from ahcc_proj_budget_eqp where ahcc_proj_budget_id=v_record_id;
 IF (v_mrl=0 AND v_hr=0 AND v_eqp=0) THEN
 FOR Cur_wbs IN (select apwbs.ahcc_project_wbs_id , apbi.ahcc_boq_item_id
 from ahcc_project_boqitem apbi
 left join (select ahcc_project_wbs_id from ahcc_project_wbs
 where ahcc_project_wbs_id not in(select wbs_parent_id from ahcc_project_wbs) 
 and ahcc_project_id=v_project_id) apwbs 
 on apbi.ahcc_project_wbs_id=apwbs.ahcc_project_wbs_id)
 LOOP
 v_wbs_id = Cur_wbs.apwbs.ahcc_project_wbs_id;
 v_boq_id = Cur_wbs.apbi.ahcc_boq_item_id;
 FOR Cur_boq IN(SELECT ahcc_boq_item_id FROM connectby('ahcc_boq_item','ahcc_boq_item_id',
 'boqitem_parentid','boqitem_name',v_boq_id,0 ,'/') AS 
 t(ahcc_boq_item_id text, boqc_parentid text, level int, branch text ,pos int))
 LOOP 
 v_boqitem_id = Cur_boq.ahcc_boq_item_id
 FOR Cur_hr IN(select abl.ka003_position_lk_id as posit, sum(abl.nooflabors*abl.hours) as totalhours 
 from ahcc_boq_labor abl
 where ahcc_boq_item_id=v_boqitem_id
 group by abl.ka003_position_lk_id)
 LOOP
 v_positionId = Cur_hr.posit;
 v_totalhours = Cur_hr.totalhours;
 INSERT INTO AHCC_Proj_budget_hr
 (
 AHCC_Proj_budget_hr_ID,ahcc_proj_budget_id, AD_CLIENT_ID, AD_ORG_ID, ISACTIVE,
 CREATED, CREATEDBY, UPDATED, UPDATEDBY,ka003_position_lk_id,hourprice,totalprice,total_hour)
 VALUES
 (
 GET_UUID(),v_projbudget,v_client,v_org,'Y',TO_DATE(NOW()),v_createdby,TO_DATE(NOW()),v_updatedby,
 v_positionId,0,0,v_totalhours
 );
 END LOOP;
 FOR Cur_eqp IN(select abe.m_product_id as product,sum(abe.equipment_quantity) as qty,sum(abe.noofhours) as hour
 from ahcc_boq_equipment abe where ahcc_boq_item_id=v_boqitem_id
 group by abe.m_product_id)
 LOOP
 v_mproduct_id = Cur_eqp.m_product_id;
 v_quantity = Cur_eqp.qty;
 v_hours = Cur_eqp.hour;
 INSERT INTO AHCC_Proj_budget_eqp
 (
 AHCC_Proj_budget_eqp_ID,ahcc_proj_budget_id, AD_CLIENT_ID, AD_ORG_ID, ISACTIVE,
 CREATED, CREATEDBY, UPDATED, UPDATEDBY,m_product_id,no_of_equipment,hour,hourprice,totalprice)
 VALUES
 (
 GET_UUID(),v_projbudget,v_client,v_org,'Y',TO_DATE(NOW()),v_createdby,TO_DATE(NOW()),v_updatedby,
 v_mproduct_id,v_quantity,v_hours,0,0
 );
 END LOOP;
 FOR Cur_mrl IN(select abm.m_product_id, sum(abm.material_quantity) as qty from ahcc_boq_material abm
 where ahcc_boq_item_id=v_boqitem_id
 group by abm.m_product_id)
 LOOP
 v_material = Cur_mrl.m_product_id;
 v_mquantity = Cur_mrl.qty;
 INSERT INTO AHCC_Proj_budget_mrl
 (
 AHCC_Proj_budget_mrl_ID,ahcc_proj_budget_id, AD_CLIENT_ID, AD_ORG_ID, ISACTIVE,
 CREATED, CREATEDBY, UPDATED, UPDATEDBY,m_product_id,quantity,productprice,totalprice)
 VALUES 
 (
 GET_UUID(),v_projbudget,v_client,v_org,'Y',TO_DATE(NOW()),v_createdby,TO_DATE(NOW()),v_updatedby,
 v_material,v_mquantity,0,0
 );
 END LOOP;
 END LOOP;
 END LOOP; 
 END IF;
 RAISE NOTICE '%','Updating PInstance - Finished ' || v_Message ;
 PERFORM AD_UPDATE_PINSTANCE(p_PInstance_ID, NULL, 'N', 1, v_Message) ; 
 RETURN;
 END; -- BODY
 EXCEPTION
 WHEN OTHERS THEN
 v_ResultStr:= '@ERROR=' || SQLERRM;
 RAISE NOTICE '%',v_ResultStr ;
 PERFORM AD_UPDATE_PINSTANCE(p_PInstance_ID, NULL, 'N', 0, v_ResultStr) ;
 RETURN;
END ; $BODY$
 LANGUAGE 'plpgsql' VOLATILE
 COST 100;
ALTER FUNCTION ahcc_proj_budget_cpy_plan1(character varying) OWNER TO tad;
Erwin Brandstetter
669k160 gold badges1.2k silver badges1.3k bronze badges
asked Mar 5, 2011 at 10:37
2
  • Note you can format lines as code by indenting them four spaces. The "{}" button in the editor toolbar does this. In this case Krtek formatted your code for you, but try it yourself in the future. Click the orange question mark in the editor toolbar for more information and tips on formatting. Commented Mar 5, 2011 at 11:40
  • 1
    Rather than posting the entirety of your code as a sample, you should always post a minimal test case, which is just enough code to reproduce the problem (but no more). Commented Mar 5, 2011 at 11:41

1 Answer 1

1

try this:

Add a semicolon just before line 83

Like so:

v_boqitem_id = Cur_boq.ahcc_boq_item_id;
answered Mar 5, 2011 at 11:02
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.