我最近开始担任开发人员的新职位,我在PL / SQL方面遇到了一些麻烦。我已经使用了MS SQL多年,但我发现PL / SQL有点棘手。
在MS SQL中编写函数和存储过程时,我常常做的一件事就是将reoccuring结果集放入表变量中,这样我就不必在整个过程中重新查询它们了。
这样的事情:
declare @badPeople table(recordPointer int)
insert into @badPeople
select BP_Record_Pointer
from People
where BP_Bad = 1
我正在考虑在PL / SQL中做类似的事情,但我不太清楚如何开始。任何想法,如果这是可能的?
答案 0 :(得分:14)
declare
type t_number is table of number;
v_numbers t_number;
begin
select BP_Record_Pointer
bulk collect into v_numbers
from People
where BP_Bad = 1;
end;
这将创建一个包含表中值的嵌套表。重要的是要注意,该表将在匿名块的末尾超出范围,因此您需要在该块内完成任何操作。
答案 1 :(得分:6)
在Oracle中,不像MS SQL游标不被认为是魔鬼和需要避免的东西。因此,通常在Oracle中,您将比在MS SQL中更频繁地使用游标。当然,如果你只能使用SQL而没有最好的游标,但不要害怕在Oracle中测试和使用游标。获得一本关于PL / SQL的好书,这是一本很好的http://www.amazon.com/Oracle-PL-SQL-Programming-4th/dp/0596009771。 Gratzy的帖子是你可以使用的另一种选择。所以得到一本好书,你可以用它来弄清楚何时使用什么。与T-SQL相比,PL / SQL是一个非常丰富的环境。虽然一旦你克服了初始曲线,它就有了更多的学习曲线,但它是一种非常简单且功能强大的语言。最重要的是,这很有趣。