我是PL SQL的新手,不知道是否可以进行以下操作
我需要基于来自多个表的多个查询来生成xml。我知道我可以执行以下操作:
with storage_info as (
select storage_name as "storage_name"
, id as "storage_id"
from storage
where
.....
),
location_info as (
select location_name as "location_name", id as "location_id" from location
where .....
)
select xmlserialize(document
xmlelement("storage",
xmlelement("storageName", "storage_name"),
xmlelement("storageId", "storage_id"),
xmlelement("location",
(select xmlagg(
xmlelement("locationId", "location_id"),
xmlelement("locationName", "location_name")
) from location_info
)
)) from storage_info;
这使得将查询与xml生成分开非常容易。但是,我希望有一个用于xml生成的过程和一个用于查询的单独过程,因为这使xml生成过程更小且更易于维护,同时还能够重用查询过程。但是,如果我从存储过程中返回了一个游标,则必须:
这似乎很乏味,因为上述方法不需要任何方法。如果我想对查询使用存储过程,有什么办法吗?我应该使用视图代替查询吗?
编辑: 我发现了一些与我想要达到的目标相似但并不完全相同的东西。 我可以这样声明一个游标:
declare
cursor store_info
is
select store_id, store_name
from store
where store_id = 26964;
begin
for rec in store_info
loop
dbms_output.put_line(rec.store_id || rec.store_name);
end loop;
end;
这样,我可以直接查询数据而不必将值放入任何变量中,但是我找不到找到这样的过程然后从xml生成过程中调用它的方法。