我修改了程序以使其更小但我真的只想运行一次选择查询。这将降低运行程序的成本。如何在不运行查询两次的情况下获取prevContectID
和nextContentID
。这正在取代之前的程序,因此我不想更改IN
和OUT
,因此我无需查找所有调用位置。
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;
答案 0 :(得分:5)
显示的过程很可能无法编译。使用多个变量的SELECT ... INTO的正确语法是:
SELECT myPrev, myNext INTO prevContentID, nextContentID
from myTable
where contentID = theContentID;
答案 1 :(得分:1)
您还可以使用游标从myTable
获取值。对于您的方法,当myTable中不存在theContentID
时,您需要进行适当的异常处理,因为这会给您{{ 1}}例外。
NO_DATA_FOUND