create or replace procedure create_Mapping_RELATION(
PROJECT_LIST IN PROJECT_MAPPING_TABLE_LIST,
COST_LIST IN COST_MAPPING_TABLE_LIST,
BGSCHEME_VALUE IN BGSCHEME_LIST
)
AS--定义接收对象
PROJECTLIST PROJECT_LIST;
COSTLIST COST_LIST;
BGSCHEMELIST BGSCHEME_VALUE;
isType varchar2(100);
BEGIN
for i in 1..BGSCHEME_VALUE.COUNT LOOP--外层循环为控制策略集合
--取得BGSCHEME_VALUE各列的值
for j in 1..COST_LIST.COUNT LOOP --第二层循环为费用类型映射表集合
for k in 1..PROJECT_LIST.COUNT LOOP --第三层循环为项目映射关系表集合
PROJECTLIST := PROJECT_LIST(k);--获取项目映射表集合
COSTLIST := COST_LIST(j);--获取费用类型映射表集合
-- BGSCHEMELIST := BGSCHEME_VALUE(i);--获取控制策略集合
COSTLIST.COST_TYPE := isType;
IF PROJECT_LIST(k)=NULL THEN
insert into CT_MAP_MappingRelationEntry(
FID,
CFCOSTTYPENUMBER,
CFCOSTTYPE,
CFBUDGETPROJECTNUMBER,
CFBUDGETNAME,
CFBUDGETPROJECT,
CFBUDGETCOSTTYPE,
CFPROJECTRID,
CFCOSTRID,
CFBGCONTROLSCHEMENUMBER,
CFBGCONTROLSCHEMEID,
CFBILLITEMCOMBINALIAS,
CFISTYPE,
CFBGCONTROLSCHEME,
CFENTRYSTATE) values(
newbosid('E62122E2'),
COSTLIST.DOCUMENT_COST_NUMBER,
COSTLIST.DOCUMENT_COST_NAME,
COSTLIST.BUDGET_PROJECT_NUMBER||'_'||PROJECTLIST.BUDGET_PROJECT_NUMBER,
COSTLIST.BUDGET_PROJECT_NAME||'_'||PROJECTLIST.BUDGET_PROJECT_NAME,
PROJECTLIST.BUDGET_PROJECT_NUMBER,
COSTLIST.BUDGET_PROJECT_NUMBER,
PROJECTLIST.PROJECT_RID,
COSTLIST.COST_RID,
IF isType = '1' THEN --如果为1等于费用管理
'entries.expenseType.number:'||COSTLIST.DOCUMENT_COST_NUMBER,
'entries.expenseType.number',
'entries.expenseType.number:'||COSTLIST.DOCUMENT_COST_NAME,
'1',
BGSCHEMELIST := BGSCHEME_VALUE(i),
'3');
ELSIF isType = '2' THEN --如果为2等于总账
'entries.account.number:'||COSTLIST.DOCUMENT_COST_NUMBER,
'entries.account.number',
'entries.account.number:'||COSTLIST.DOCUMENT_COST_NAME,
'2',
BGSCHEMELIST := BGSCHEME_VALUE(i), '3');
END IF ELSE
insert into CT_MAP_MappingRelationEntry(
FID,
CFCOSTTYPENUMBER,
CFCOSTTYPE,
CFPROJECTNUMBER,
CFPROJECT,
CFBUDGETPROJECTNUMBER,
CFBUDGETNAME,
CFBUDGETPROJECT,
CFBUDGETCOSTTYPE,
CFPROJECTRID,
CFCOSTRID,
CFBGCONTROLSCHEMENUMBER,
CFBGCONTROLSCHEMEID,
CFBILLITEMCOMBINALIAS,
CFISTYPE,
CFBGCONTROLSCHEME,
CFENTRYSTATE) values(
newbosid('E62122E2'),
COSTLIST.DOCUMENT_COST_NUMBER,
COSTLIST.DOCUMENT_COST_NAME,
PROJECTLIST.DOCUMENT_PROJECT_NUMBER,
PROJECTLIST.DOCUMENT_PROJECT_NAME,
COSTLIST.BUDGET_PROJECT_NUMBER||'_'||PROJECTLIST.BUDGET_PROJECT_NUMBER,
COSTLIST.BUDGET_PROJECT_NAME||'_'||PROJECTLIST.BUDGET_PROJECT_NAME,
PROJECTLIST.BUDGET_PROJECT_NUMBER,
COSTLIST.BUDGET_PROJECT_NUMBER,
PROJECTLIST.PROJECT_RID,
COSTLIST.COST_RID, IF isType = '1' THEN --如果为1等于费用管理
'entries.expenseType.number:'||COSTLIST.DOCUMENT_COST_NUMBER||'|entries.project.number:'||PROJECTLIST.DOCUMENT_PROJECT_NUMBER,
'entries.expenseType.number|entries.project.number',
'entries.expenseType.number:'||COSTLIST.DOCUMENT_COST_NAME||'|entries.project.number:'||PROJECTLIST.DOCUMENT_PROJECT_NAME,
'1',
BGSCHEMELIST := BGSCHEME_VALUE(i),
'3'); ELSIF isType = '2' THEN --如果为2等于总账
'entries.account.number:'||COSTLIST.DOCUMENT_COST_NUMBER||'|entries.assistRecords.assGrp.project.number:'||PROJECTLIST.DOCUMENT_PROJECT_NUMBER,
'entries.account.number|entries.assistRecords.assGrp.project.number',
'entries.account.number:'||COSTLIST.DOCUMENT_COST_NAME||'|entries.assistRecords.assGrp.project.number:'||PROJECTLIST.DOCUMENT_PROJECT_NAME,
'2',
BGSCHEMELIST := BGSCHEME_VALUE(i),
'3');
END IF END IF
END LOOP
END LOOP
END LOOP
END;
END create_Mapping_RELATION
PROJECT_LIST IN PROJECT_MAPPING_TABLE_LIST,
COST_LIST IN COST_MAPPING_TABLE_LIST,
BGSCHEME_VALUE IN BGSCHEME_LIST
)
AS--定义接收对象
PROJECTLIST PROJECT_LIST;
COSTLIST COST_LIST;
BGSCHEMELIST BGSCHEME_VALUE;
isType varchar2(100);
BEGIN
for i in 1..BGSCHEME_VALUE.COUNT LOOP--外层循环为控制策略集合
--取得BGSCHEME_VALUE各列的值
for j in 1..COST_LIST.COUNT LOOP --第二层循环为费用类型映射表集合
for k in 1..PROJECT_LIST.COUNT LOOP --第三层循环为项目映射关系表集合
PROJECTLIST := PROJECT_LIST(k);--获取项目映射表集合
COSTLIST := COST_LIST(j);--获取费用类型映射表集合
-- BGSCHEMELIST := BGSCHEME_VALUE(i);--获取控制策略集合
COSTLIST.COST_TYPE := isType;
IF PROJECT_LIST(k)=NULL THEN
insert into CT_MAP_MappingRelationEntry(
FID,
CFCOSTTYPENUMBER,
CFCOSTTYPE,
CFBUDGETPROJECTNUMBER,
CFBUDGETNAME,
CFBUDGETPROJECT,
CFBUDGETCOSTTYPE,
CFPROJECTRID,
CFCOSTRID,
CFBGCONTROLSCHEMENUMBER,
CFBGCONTROLSCHEMEID,
CFBILLITEMCOMBINALIAS,
CFISTYPE,
CFBGCONTROLSCHEME,
CFENTRYSTATE) values(
newbosid('E62122E2'),
COSTLIST.DOCUMENT_COST_NUMBER,
COSTLIST.DOCUMENT_COST_NAME,
COSTLIST.BUDGET_PROJECT_NUMBER||'_'||PROJECTLIST.BUDGET_PROJECT_NUMBER,
COSTLIST.BUDGET_PROJECT_NAME||'_'||PROJECTLIST.BUDGET_PROJECT_NAME,
PROJECTLIST.BUDGET_PROJECT_NUMBER,
COSTLIST.BUDGET_PROJECT_NUMBER,
PROJECTLIST.PROJECT_RID,
COSTLIST.COST_RID,
IF isType = '1' THEN --如果为1等于费用管理
'entries.expenseType.number:'||COSTLIST.DOCUMENT_COST_NUMBER,
'entries.expenseType.number',
'entries.expenseType.number:'||COSTLIST.DOCUMENT_COST_NAME,
'1',
BGSCHEMELIST := BGSCHEME_VALUE(i),
'3');
ELSIF isType = '2' THEN --如果为2等于总账
'entries.account.number:'||COSTLIST.DOCUMENT_COST_NUMBER,
'entries.account.number',
'entries.account.number:'||COSTLIST.DOCUMENT_COST_NAME,
'2',
BGSCHEMELIST := BGSCHEME_VALUE(i), '3');
END IF ELSE
insert into CT_MAP_MappingRelationEntry(
FID,
CFCOSTTYPENUMBER,
CFCOSTTYPE,
CFPROJECTNUMBER,
CFPROJECT,
CFBUDGETPROJECTNUMBER,
CFBUDGETNAME,
CFBUDGETPROJECT,
CFBUDGETCOSTTYPE,
CFPROJECTRID,
CFCOSTRID,
CFBGCONTROLSCHEMENUMBER,
CFBGCONTROLSCHEMEID,
CFBILLITEMCOMBINALIAS,
CFISTYPE,
CFBGCONTROLSCHEME,
CFENTRYSTATE) values(
newbosid('E62122E2'),
COSTLIST.DOCUMENT_COST_NUMBER,
COSTLIST.DOCUMENT_COST_NAME,
PROJECTLIST.DOCUMENT_PROJECT_NUMBER,
PROJECTLIST.DOCUMENT_PROJECT_NAME,
COSTLIST.BUDGET_PROJECT_NUMBER||'_'||PROJECTLIST.BUDGET_PROJECT_NUMBER,
COSTLIST.BUDGET_PROJECT_NAME||'_'||PROJECTLIST.BUDGET_PROJECT_NAME,
PROJECTLIST.BUDGET_PROJECT_NUMBER,
COSTLIST.BUDGET_PROJECT_NUMBER,
PROJECTLIST.PROJECT_RID,
COSTLIST.COST_RID, IF isType = '1' THEN --如果为1等于费用管理
'entries.expenseType.number:'||COSTLIST.DOCUMENT_COST_NUMBER||'|entries.project.number:'||PROJECTLIST.DOCUMENT_PROJECT_NUMBER,
'entries.expenseType.number|entries.project.number',
'entries.expenseType.number:'||COSTLIST.DOCUMENT_COST_NAME||'|entries.project.number:'||PROJECTLIST.DOCUMENT_PROJECT_NAME,
'1',
BGSCHEMELIST := BGSCHEME_VALUE(i),
'3'); ELSIF isType = '2' THEN --如果为2等于总账
'entries.account.number:'||COSTLIST.DOCUMENT_COST_NUMBER||'|entries.assistRecords.assGrp.project.number:'||PROJECTLIST.DOCUMENT_PROJECT_NUMBER,
'entries.account.number|entries.assistRecords.assGrp.project.number',
'entries.account.number:'||COSTLIST.DOCUMENT_COST_NAME||'|entries.assistRecords.assGrp.project.number:'||PROJECTLIST.DOCUMENT_PROJECT_NAME,
'2',
BGSCHEMELIST := BGSCHEME_VALUE(i),
'3');
END IF END IF
END LOOP
END LOOP
END LOOP
END;
END create_Mapping_RELATION
'entries.expenseType.number',
'entries.expenseType.number:'||COSTLIST.DOCUMENT_COST_NAME,
'1',
BGSCHEMELIST := BGSCHEME_VALUE(i),
'3');
ELSIF isType = '2' THEN --如果为2等于总账
'entries.account.number:'||COSTLIST.DOCUMENT_COST_NUMBER,
'entries.account.number',
'entries.account.number:'||COSTLIST.DOCUMENT_COST_NAME,
'2',
BGSCHEMELIST := BGSCHEME_VALUE(i), '3');
END IFINSERT 语句中,怎么还出现了 IF 语句,这是要做什么呢?
values(
case when isType = '1' then '1111'
when isType ='2' then '2222'
else '33333'
end)