Oracle从包内的select查询中获取两个变量

时间:2012-12-31 14:51:11

标签: oracle

我修改了程序以使其更小但我真的只想运行一次选择查询。这将降低运行程序的成本。如何在不运行查询两次的情况下获取prevContectIDnextContentID。这正在取代之前的程序,因此我不想更改INOUT,因此我无需查找所有调用位置。

procedure getSeq(theContentID IN table.contentID%type,
                 prevContentID OUT table.contentID%type, 
                 nextContentID OUT table.contentID%type)
BEGIN

  SELECT myPrev into prevContentID, myNext into nextContentID
    from myTable
   where contentID=theContentID;
  RETURN;
END getSeq;

2 个答案:

答案 0 :(得分:5)

显示的过程很可能无法编译。使用多个变量的SELECT ... INTO的正确语法是:

SELECT myPrev, myNext INTO prevContentID, nextContentID
from myTable
where contentID = theContentID;

答案 1 :(得分:1)

您还可以使用游标从myTable获取值。对于您的方法,当myTable中不存在theContentID时,您需要进行适当的异常处理,因为这会给您{{ 1}}例外。

NO_DATA_FOUND