declare
 var_catids varchar2(256) default '';
 int_pp integer default 0;begin  var_catids :='1640,1633,1635';
select max(pp) into int_pp from  table1 where  id in (var_catids);
dbms_output.put_line('int_pp:'||int_pp);
end;把select max(pp) into int_pp from  table1 where  id in (var_catids);这语句换成如下就正常了
select max(pp) into int_pp from  table1 where  id in (1640,1633,1635);哪位高手帮我看看.

解决方案 »

  1.   

    1640,1633,1635
    这是三个字符串
    而传入一个varchar,内容是1640,1633,1635
    就认是一个字符串,逗号是字符串的一部分,要用动态SQL
      

  2.   

    declare 
    var_catids varchar2(256) default ''; 
    int_pp integer default 0; 
    tem_sql varchar(2000);
    begin var_catids :='1640,1633,1635'; 
    temp_sql:='select max(pp)  from  table1 where  id in ('||var_catids||')'; 
    execute immediate temp_sql into int_pp ;
    dbms_output.put_line('int_pp:' ¦ ¦int_pp); 
    end; 
    你这样去试试看
      

  3.   

    2楼的如果传入的是字符串类型
    可以
    var_catids :='''1640'',''1633'',''1635'''; 
    前几天刚刚试验过
      

  4.   

    2楼的如果传入的是字符串类型 
    可以 
    var_catids :='''1640'',''1633'',''1635'''; 
    前几天刚刚试验过