多行的动态sql,怎么返回值啊?

unm 2010-07-04 11:03:52
动态sql如下
declare rtndata nvarchar2(2000);mKeyID NUMBER;
begin
insert into t_vehicle_kind (id,code,name,org_id) values (S_vehicle_kind.NEXTVAL,'dd@g.com','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,'dd@g.com','singletab','0') returning id into mKeyID;
rtndata:=rtndata||',{comp419:'||mKeyID||'}';
---- 怎么返回这个rtndata数据?
end;


也就是如何返回到这个上面,dsql就是上面的动态sql语句
EXECUTE IMMEDIATE dsql into r_data;
如何返回给r_data??
...全文
150 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyaoxiugaile 2011-10-18
看过,学习一下
回复
unm 2010-07-08
各位对一个事物中的多个sql是一次执行的?还是在java端一次一次的执行?
回复
bbshutie 2010-07-05
不懂
帮顶
回复
unm 2010-07-05
也就是,有多个insert语句,insert后返回刚插入的值

这些insert语句是动态sql

所以,需要EXECUTE IMMEDIATE 来执行

但是,动态sql里面在执行时得到的seq我怎么返回到EXECUTE IMMEDIATE 这个层面呢?
也就是EXECUTE IMMEDIATE 里面执行后返回的字串在EXECUTE IMMEDIATE 这个层面取得

额,不行就没法了
回复
xdy3008 2010-07-05
........... 没看明白。
回复
dingjun123 2010-07-04
传进去拼条件,比如你传入'a,b,c'要拼为where ... in ('a','b','c')??考虑绑定变量,cardnality因素,可以使用table函数,自己写个函数切割字符串传入到数组或nested table中,然后用table函数将in条件换成子查询即可,可能要加hint
回复
unm 2010-07-04
其实就一个字符串,这个字符串,怎么由动态sql里面传出到EXECUTE IMMEDIATE

也就是动态sql执行时里面变量生成的字符串,怎么传出到EXECUTE IMMEDIATE这个层面
回复
vber1010 2010-07-04
用数组、
回复
发动态
发帖子
基础和管理
创建于2007-09-28

1.7w+

社区成员

Oracle 基础和管理
申请成为版主
社区公告
暂无公告