Oracle Plsql动态选择作为参数

Oracle Plsql动态选择作为参数,oracle,dynamic,plsql,bind,Oracle,Dynamic,Plsql,Bind,我有一个过程a,它将select语句作为参数,但我希望select是动态的 Proc A (query); Proc B is Declare -- try 1 using variables q varchar2(200):= 'select xy from table where col =' || var ; -- try 2 using bind q varchar2(200):= 'select xy from table where col = :v' ; Begin --

我有一个过程a,它将select语句作为参数,但我希望select是动态的

Proc A (query);


Proc B is
Declare
-- try 1 using variables
q varchar2(200):= 'select xy from table where col =' || var ;

-- try 2 using bind
q varchar2(200):= 'select xy from table where col = :v' ;

Begin

-- here i want to be able to define a variable based on certain conditions and my string q will take the variable.

A(q);

End;
这可能吗? 有人能帮忙吗

CREATE OR REPLACE PROCEDURE Proc_A (in_query varchar)
IS
BEGIN
  execute immediate in_query;
END;
/

CREATE OR REPLACE PROCEDURE Proc_B 
IS
  col_val varchar2(60) := 'Lady Gaga';
  q varchar2(200):= 'select * from test_table where char_col =''' || col_val || '''';
Begin
  Proc_A(q);
End;
/

begin
  Proc_B;
end;

但显然,对于选择,您需要获取结果集。DMLs插入/删除/。。。将按说明工作。

只需查看本页右下角的相关部分。你会发现许多这样的答案对你有帮助。