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);哪位高手帮我看看.
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);哪位高手帮我看看.
这是三个字符串
而传入一个varchar,内容是1640,1633,1635
就认是一个字符串,逗号是字符串的一部分,要用动态SQL
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;
你这样去试试看
可以
var_catids :='''1640'',''1633'',''1635''';
前几天刚刚试验过
可以
var_catids :='''1640'',''1633'',''1635''';
前几天刚刚试验过