declare 
value_0  number(18,4);
value_00 number(18,4);
i        number(4) default 0;
table_name varchar2(20);
begin
while i<10
loop
execute immediate 'select count(distinct phone_no),count(*) into value_0,value_00 from abc'||i;
i:=i+1;
end loop;end;
其中abc【0-9】有10张表 ,我into 给value_0,value_00 报错,我该怎么改哈 ????

解决方案 »

  1.   

    execute immediate 'select count(distinct phone_no),count(*) from abc'||i
     into value_0,value_00 ;
      

  2.   

    declare 
    value_0  number(18,4);
    value_00 number(18,4);
    i        number(4) default 0;
    table_name varchar2(20);
    begin
    while i<10
    loop
    select count(distinct phone_no),count(*) into value_0,value_00 from abc;
    i:=i+1;
    end loop;end;
      

  3.   

    create or replace
    procedure exe_test_proc
    as
    value_0  number(18,4);
    value_00 number(18,4);
    i        number(4):=1;
    --table_name varchar2(20);
    begin
    while i<3
    loop
    execute immediate 'select count(distinct sal),count(*)  from t'||i  into value_0,value_00;
    i:=i+1;
    dbms_output.put_line(value_0||':'||value_00);
    end loop;
    end exe_test_proc;
    向1楼说的那样。经过测试,正确!