- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的
pl/sql
PL/pgSQL 函数。我在这个函数中遇到语法错误。你能帮我解决这个问题吗?
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
这是我的代码:
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;
最佳答案
试试这个:
在第 83 行之前添加一个分号
像这样:
v_boqitem_id = Cur_boq.ahcc_boq_item_id;
关于postgresql - PL/pgSQL 函数中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5203268/
我正在使用源代码中的Postgres 13(Rel_13_STRATE分支),并且我使用的是来自apachea/age源代码的(Release/PG13/1.3.0分支)中的1.3.0版的Apache
我有 fusionpbx 和简单的 pgsql 工作......现在我已经用 bdr pgsql 创建了 HA fusionpbx 并且它工作正常但我不知道如何将数据从非 bdr pgsql 迁移到
我正在尝试安装 php7.0-pgsql,但总是得到 E: 无法定位软件包 phpXXX-pgsql 我在尝试 apt-get update apt-get install php7.0-pgsq
我有一个 Rails 应用程序,我正在尝试对其运行测试。在我能够成功运行 rake test:all 的前一天,一切都井井有条。今天,当我运行 rake test:all 时,我收到了这个错误: 我知
有时候我们项目中会遇到查询的字符串比较特殊:如自己本身待单引号 此时查询肯定报错。那么处理方式也很简单 只需要这样加一个单引号 这样就可以解决了 解决方式和MySQL方式不一样。 补充
1、网上一般说的方法如下: :=,赋值,比如user_id := 20; select into 赋值,比如 ?
我就废话不多说了,看代码吧~ ? 1
删除数据库的命令: ? 1
方法: pg10.0之前: select pg_switch_xlog(); pg10.0之后: select pg_switch_wal(); 备注:执行 pg_switch_xlog(
1. 获取表中普通信息:如字段名,字段类型等 ? 1
环境:VMware、CentOS-7-x86_64-DVD-2009.iso、nginx-1.26.1、php-7.2.0、postgresql-12 php最好安装对应php项目所需版本,否则会出
我正在尝试将字符串列数据排序为数字。我收到如下错误: ERROR: invalid input syntax for integer: "HEI001" SQL state: 22P02 我尝试过:
如果我将这两个 Postgres 函数定义保存在两个单独的 .sql 文件中: CREATE OR REPLACE FUNCTION column_exists(tablename text, col
我正在尝试在 Windows 10 64 位 (WAPP) 上使用 pgsql 扩展。 我有: 重新启动 Apache 取消注释 php.ini 中的所有 postgresql 扩展 使用LoadFi
我尝试使用 phpPgAdmin 在我的数据库中创建一个表。但是在生成代码后出现错误。 SQL 错误: ERROR: syntax error at or near "(" at character
我已经在 pgsql 中创建了一个存储过程。特定列中有一个 json 对象,我需要获取该 json 对象中数据的总和。在遇到空值之前,它可以完美运行。json 对象中的元素可以有空值。但是当我得到总和
我必须编写一个查询,以某种方式对我的用户名进行排序(排序),其中应优先使用特定字母(在名称中)进行排序。例如,如果我有用户 Lemon、Loger、Alan、Avon、Bland、Cavin、Clau
背景 我是 PostgreSQL 的新手,我在使用这个触发函数时遇到了一些问题,我在下面明显简化了这些问题。我可以要求帮助修复查询,但我认为我可以处理,而且我更关心的是我有很多这样的功能,我需要一种方
我正在尝试确定如何在 PgSQL 中将一年中的某一天转回日期。当我这样做时 select date '2013-01-01' + interval '53 days' 我得到一个时间戳: "2013-
这段代码没有错误,但没有任何数据变化,请帮助我。我想从一些库存表中多次更新数量 drop FUNCTION SP_PROSES_STOCK(noresep bigint, p_post_cd varc
我是一名优秀的程序员,十分优秀!