仅在满足条件时使用提示

时间:2014-10-30 11:42:03

标签: oracle plsql oracle11g hint

我的PL / SQL函数插入表中:

procedure MY_PROC(n in number default null) is
begin
    insert into MY_TABLE T
    select ...
    from ...;
end;

我的问题是:如果n为空,则查询非常慢,我发现使用materialize提示(是的,我知道它没有记录)解决了这个问题。但是如果n不为空,那么快速的查询现在因为这个提示而变慢了!

那么只有在符合条件的情况下才有办法使用提示吗?我想要使​​用动态SQL(execute immediate),但我想避免这种情况。

谢谢!

1 个答案:

答案 0 :(得分:1)

你必须写两个插入语句,一个带有提示,一个带有提示,并用

分隔它们。
if n is null then
   ... statement with hint
else
   ... statement without hint
end if;