我是一个初学Oracle的人,很多地方要请教大家,现在有一个项目与部门的多对多关系,多对多靠一个中间关系表实现,项目对应的部门有不同的状态,这个状态标识也存在关系表中,已知一个项目,查找对应的部门,语句是SELECT "部门"."部门名称",
"中间关系表"."部门状态"
FROM "部门" INNER JOIN
"中间关系表" ON
"部门"."部门ID" = "中间关系表"."部门ID"
WHERE ("中间关系表"."项目ID" = 项目ID)我想把这个写成一个函数,传入的就是项目ID,传出的就是所有部门的字符串以及状态说明,有一点点聚合的意思,也就是SELECT语句查出来的本应该是部门名称 部门状态
AAA 0
BBB 1
CCC 0我想得到一个结果是“BBB 1,AAA 0,CCC 0”这样一个字符串请各位高手指教一下,这个函数怎么写?
"中间关系表"."部门状态"
FROM "部门" INNER JOIN
"中间关系表" ON
"部门"."部门ID" = "中间关系表"."部门ID"
WHERE ("中间关系表"."项目ID" = 项目ID)我想把这个写成一个函数,传入的就是项目ID,传出的就是所有部门的字符串以及状态说明,有一点点聚合的意思,也就是SELECT语句查出来的本应该是部门名称 部门状态
AAA 0
BBB 1
CCC 0我想得到一个结果是“BBB 1,AAA 0,CCC 0”这样一个字符串请各位高手指教一下,这个函数怎么写?
Result varchar2(1000);
v_name varchar2(1000);
cursor cur_name is SELECT "部门"."部门名称" as deptName,
"中间关系表"."部门状态" as deptStatus
FROM "部门" INNER JOIN
"中间关系表" ON
"部门"."部门ID" = "中间关系表"."部门ID"
WHERE ("中间关系表"."项目ID" = proId);
begin
v_name :='';
for cur_name_get in cur_name
Loop
v_name := v_name || cur_name_get.deptName||' '||cur_name_get.deptStatus||';';
End Loop;
Dbms_Output.put_line('last_v_name:'||v_name);
return(Result);
end test;