DECLARE
 m_table character(50):= a.b06;
 my_query varchar2(10000);
 p_condition number := '1234567';
begin
 my_query:= 'select * from '||m_table where ||' msisdn = p_condition';
 Execute immediate my_query;
end;说问题在,where 请各位看看怎么修改的啊,谢谢。。

解决方案 »

  1.   


    这个需要游标的。
    从一个帖子里copy的sample:create or replace procedure AA_SXJTEST is
      out_gg number(8);
      cursor v_cur is select id from t_gzgl_zxjr_list;
    begin
      open v_cur;
      fetch v_cur into out_gg;
      while v_cur %found loop
        DBMS_OUTPUT.put_line('out_gg变量的值=:'||out_gg);
        fetch v_cur into out_gg;
      end loop;
      close v_cur;
    end AA_SXJTEST; 
      

  2.   

    my_query:= 'select * from '||m_table||' where  msisdn = p_condition'; 
      

  3.   

    后面也有问题
    my_query:= 'select * from '||m_table||' where  msisdn = '''||p_condition||''''; 
      

  4.   

    declare里面还有一个少引号的呢
      

  5.   

    那个检索结果不对取的是msisdn = p_condition的记录了,而不是匹配 p_condition的值
    4楼的写法正确
      

  6.   


    1. sql拼的有问题
    SQL codemy_query:= 'select * from '||m_table||' where  msisdn = '||p_condition; 2. 可以使用动态的参数
    codemy_query:= 'select * from '||m_table||' where  msisdn = :1';  (表名和字段名不行)
    execute immediate codemy_query using p_condition;3. 保证sql返回单条记录,多条应该使用1楼说的这样的方式
      

  7.   

    这个在delare的时候加上单引号
      

  8.   

    DECLARE 
    m_table character(50):= 'a.b06'; 
    my_query varchar2(10000); 
    p_condition number := '1234567'; 
    begin 
    my_query:= 'select * from '||m_table ||' where  msisdn = '''||p_condition||''''; 
    Execute immediate my_query; 
    end; 
      

  9.   

    DECLARE 
    type cur is ref cursor;
    v_cur cur;
    --这里定义一系列变量 "变量1,变量2,....." 对应表a.b06中的各个列,可能有别的简单方法。
    m_table character(50):= 'a.b06'; 
    my_query varchar2(10000); 
    p_condition number := '1234567'; 
    begin 
      open v_cur for  'select * from '||m_table ||' where  msisdn = '''||p_condition||'''';
      fetch v_cur into 变量1,变量2,......;   --定义的那一系列变量
      while v_cur %found loop 
        DBMS_OUTPUT.put_line(变量1||chr(9)||变量2,.....); 
        fetch v_cur into 变量1,变量2,......;   --定义的那一系列变量
      end loop; 
      close v_cur; 
    end;  
    /
    set serveroutput on
    /
    然后就有结果了