列中的PL SQL变量引用

时间:2014-11-03 11:19:28

标签: oracle plsql

我有一个要求,其中我有一个表列,其中包含一个表达式,该表达式应作为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块中检索到的方式存储在列中,它将被变量值替换。

由于

1 个答案:

答案 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;