我有以下代码和2个游标。即使在需要调整之后,两者都是耗时的。 所以,我的想法是通过仅在需要的基础上调用游标SQL来提高函数的性能 基于一些已知的条件。
现有代码:
Function MyFunction(Param1 IN DATE) RETURN BOOLEAN
CURSOR C1 IS <MyTimeConsumingQuery1>;
CURSOR C2 IS <MyTimeConsumingQuery2>;
IF NVL(KnownCondition,'Y') = 'N' THEN
OPEN C1;
ELSE
OPEN C2;
END IF;
...
END MyFunction
以下是我想要实现的目标:
Function MyFunction(Param1 IN DATE) RETURN BOOLEAN
IF NVL(KnownCondition,'Y') = 'N' THEN
CURSOR C1 IS <MyTimeConsumingQuery1>;
OPEN C1;
ELSE
CURSOR C2 IS <MyTimeConsumingQuery2>;
OPEN C2;
END IF;
...
END MyFunction
当我尝试编译代码时,我收到PLS-00103: Encountered the symbol
错误。
如何有选择地调用游标查询以提高性能?
答案 0 :(得分:0)
有很多方法可以做到这一点。仅举例来说
Function MyFunction(Param1 IN DATE) RETURN BOOLEAN is
begin
IF NVL(KnownCondition,'Y') = 'N' THEN
declare
CURSOR C1 IS <MyTimeConsumingQuery1>;
begin
OPEN C1;
...
end;
ELSE
declare
CURSOR C2 IS <MyTimeConsumingQuery2>;
begin
OPEN C2;
...
end;
END IF;
...
END MyFunction