动态sql如下
declare rtndata nvarchar2(2000);mKeyID NUMBER;
begin 
insert into t_vehicle_kind (id,code,name,org_id) values (S_vehicle_kind.NEXTVAL,'[email protected]','singletab','0') returning id into mKeyID; 
rtndata:=rtndata||',{comp403:'||mKeyID||'}'; 
insert into t_vehicle_kind (id,code,name,org_id) values (S_vehicle_kind.NEXTVAL,'[email protected]','singletab','0') returning id into mKeyID; 
rtndata:=rtndata||',{comp419:'||mKeyID||'}';
---- 怎么返回这个rtndata数据?
end;
也就是如何返回到这个上面,dsql就是上面的动态sql语句
EXECUTE IMMEDIATE dsql into r_data;
如何返回给r_data??

解决方案 »

  1.   

    其实就一个字符串,这个字符串,怎么由动态sql里面传出到EXECUTE IMMEDIATE也就是动态sql执行时里面变量生成的字符串,怎么传出到EXECUTE IMMEDIATE这个层面
      

  2.   

    传进去拼条件,比如你传入'a,b,c'要拼为where ... in ('a','b','c')??考虑绑定变量,cardnality因素,可以使用table函数,自己写个函数切割字符串传入到数组或nested table中,然后用table函数将in条件换成子查询即可,可能要加hint
      

  3.   

    也就是,有多个insert语句,insert后返回刚插入的值这些insert语句是动态sql所以,需要EXECUTE IMMEDIATE 来执行但是,动态sql里面在执行时得到的seq我怎么返回到EXECUTE IMMEDIATE 这个层面呢?
    也就是EXECUTE IMMEDIATE 里面执行后返回的字串在EXECUTE IMMEDIATE 这个层面取得额,不行就没法了
      

  4.   

    各位对一个事物中的多个sql是一次执行的?还是在java端一次一次的执行?