日期:2014-05-17  浏览次数:20722 次

一个sql动态查询的问题
现在有表A
有如下字段
ID     ACTION_TYPE  ACTION_ID
1000       1        11111
1001       2        22222
1002       3        33333

表B
ID       name        honme
11111     lvb         nj
表c
ID       names        honme 
11111     lvc         nj
22222     lv1c         nj2c

表D
ID       names        honme 
11111     lvD         nj1D
22222     lv12         nj2D
33333     lv12         nj3D

现在当表A里面的 ACTION_TYPE 为‘1’时,表A的ACTION_ID和表B的ID关联查询  
当表A里面的 ACTION_TYPE 为'2’时,表A的ACTION_ID和表C的ID关联查询
当表A里面的 ACTION_TYPE 为'3'时,表A的ACTION_ID和表D的ID关联查询
这个怎么联合查出来呢??
众神可有办法。。。。
sql联合查询

------解决方案--------------------
create or replace procedure p_dynamic_sql(ptye number)
is
declare 
  c_cur my_cursor;
  v_sql varchar2(4000);
begin
    v_sql:="select a.id,a.action_type,a.action_id,b.name,b.home from table1 a,table2 b where a.id=b.id";
if ptype =2 then
  v_sql:=replace(v_sql,"table3");
end if;
if ptype=3 then
  v_sql:=replace(v_sql,"table4");
end if;
Open c_cur for v_sql;
end p_dynamic_sql;
/



------解决方案--------------------
这样可以通过么