当前位置:  开发笔记 > 数据库 > 正文

PL/SQL:从游标中获取2个或更多连接表的最佳实践?

如何解决《PL/SQL:从游标中获取2个或更多连接表的最佳实践?》经验,为你挑选了2个好方法。

我听说使用%ROWTYPE属性在PL/SQL中定义记录是一个好习惯.这样可以节省输入并允许您的包即使在添加或删除列时也能继续运行.(如我错了请纠正我!)

但是,当我从涉及连接的游标中获取时,我发现我必须获取程序员定义的记录,该记录包括由连接返回的每列的(很可能很长的)手写列表.

所以我的问题是:是否有可能获取嵌套记录,或者获取记录列表,或做些什么来避免这种丑陋的kludge?我尝试过的所有内容都会导致错误的记录与光标返回的内容不匹配.

使用游标返回连接的结果对我来说似乎是一个常见的用例,奇怪的是在搜索中没有出现与此相关的内容.

谢谢.



1> Edwin..:

您可以使用游标%rowtype.

样品:

declare
cursor c_c is
select emp.*, dept.* -- use aliasses if columns have same name
from emp
,    dept; -- for sample no join condition

r_c c_c%rowtype; 

begin
  for r_c in c_c loop -- with for loop even the definition of r_c is not needed.
  ...
  end loop;
end;
/



2> 小智..:

为什么甚至打扰光标声明?

这是等效的.

begin
  for r_c in (select emp.*, dept.* from emp, dept) loop
  ...
  end loop;
end;

我在你的评论中看到你提到这一点.但我看到显式的游标语法使用了这么多,我认为显示它很重要.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有