两个表,tab1(有列名为A)和tab2(有列名为B),tab2表的B列值为(A between 10 and 20)or A=30 or A=60,现在对tab1表写select * from tab1 where (A between 10 and 20)or A=30 or A=60,也就是说,tab1后面的where子句部分和tab2表的B列的值完全一样,请问如何实现tab2.B的值代替select * from tab1的where部分。 

解决方案 »

  1.   

    请教动态sql怎么写呢?指导一下,谢谢!
      

  2.   

    declare 
     v_sql varchar2(2000);
     v_table varchar2(20);
    begin 
     
     v_table :='tab_a';
     v_sql := 'select * from ' || v_table || ' where (A between 10 and 20)or A=30 or A=60)';
     execute immediate v_sql;
    end;
    --可以做个参数,调用
    --A可以换成列数字,如第一列为1,如果tab_a,tab_b中a,b相同