我有一个要求,其中我有一个表列,其中包含一个表达式,该表达式应作为where子句附加到过程中的select stmt。
该表达式引用了该过程中可用的变量。
Declare
Query varchar2(4000);
Expression varchar2(4000);
Value varchar2(10):= 'abc';
Valuex varchar2 := 'def';
... n number of variables declared
Cursor c1 is select expression from tableabc where some condition;
Begin
Expression := output of c1 cursor
Query := ‘select 1 from dual where 1 = 1 ';
Query := query || expression;
-- now i will use a ref cursor to evaluate query
End;
表abctable有一个表达式列存储:
'abc'=值
此表达式中引用的值是pl sql块中的一个声明。
我如何实现这一目标,因为这不起作用。 我希望表达式列中的值替换为pl sql块中可用的值。我不想使用替换函数,因为表达式列可以引用valuex变量或pl sql块中声明的任何n变量。表达式是否可以以在pl sql块中检索到的方式存储在列中,它将被变量值替换。
由于
答案 0 :(得分:0)
Declare
Query varchar2(4000);
Value varchar2(10):= 'abc';
c1 sys_refcursor;
Begin
select 'select 1 from dual where 1 = 1 ' || expression
into query
from tableabc where some condition;
-- now i will use a ref cursor to evaluate query
-- suppose the expression looks like "and col1 = :v and col2 = :v"
open rc for query using value;
loop
-- fetch
-- exit when rc%notfound;
-- process
end loop;
close rc;
End;