我有一个procedure 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;
这可能吗? 有人可以帮忙吗?
答案 0 :(得分:1)
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;
但显然对于选择你需要拿起结果集。 DML(插入/删除/ ...)将按照描述工作。