新手求助,oracle函数的写法。

我叫小超 2016-06-28 01:03:20
create or replace function insert_his_big_fake(v_hm_number in varchar2) return integer is
Result integer;
str varchar2(1024) := '';
begin
insert into THEAT_TOURCOPY (tc_id,tc_name,tc_date,hs_id,tc_watertemp_supply,tc_watertemp_back,tc_transient_flow,tc_total_flow,tc_total_heat,hm_number,tc_readmeter_status,tc_roomtemp,tc_counterflow,tc_collector_addr,tc_collectornum,tc_metertype,tc_valvestatus,tc_isnow)

(select salary_seq.nextval,'' tc_name,sysdate tc_date,1 hs_id,
substr(to_char(dbms_random.value(22,24)),1,5) tc_watertemp_supply,
substr(to_char(dbms_random.value(22,24)),1,5) tc_watertemp_back,
'' tc_transient_flow,
substr(to_char(dbms_random.value(1000,1500)),1,7) tc_total_flow,
substr(to_char(dbms_random.value(45,65)),1,5) tc_total_heat,
hm.hm_number,1,23,0,tc.collector_addr,tc.collector_addr,'热量表','正常','1'
from theat_heatmeter hm
left join theat_livebuild lb on hm.lb_id = lb.lb_id
left join tb_dw_collector tc on hm.collector_id = tc.rid
where lb.area_id is not null
and hm.hm_type like '%表'
and hm.hm_number = v_hm_number);
commit;
dbms_output.put_line(str);
return(Result);
end insert_his_big_fake;
我这样写对吗?我单个的将 insert into THEAT_TOURCOPY (tc_id,tc_name,tc_date,hs_id,tc_watertemp_supply,tc_watertemp_back,tc_transient_flow,tc_total_flow,tc_total_heat,hm_number,tc_readmeter_status,tc_roomtemp,tc_counterflow,tc_collector_addr,tc_collectornum,tc_metertype,tc_valvestatus,tc_isnow)

(select salary_seq.nextval,'' tc_name,sysdate tc_date,1 hs_id,
substr(to_char(dbms_random.value(22,24)),1,5) tc_watertemp_supply,
substr(to_char(dbms_random.value(22,24)),1,5) tc_watertemp_back,
'' tc_transient_flow,
substr(to_char(dbms_random.value(1000,1500)),1,7) tc_total_flow,
substr(to_char(dbms_random.value(45,65)),1,5) tc_total_heat,
hm.hm_number,1,23,0,tc.collector_addr,tc.collector_addr,'热量表','正常','1'
from theat_heatmeter hm
left join theat_livebuild lb on hm.lb_id = lb.lb_id
left join tb_dw_collector tc on hm.collector_id = tc.rid
where lb.area_id is not null
and hm.hm_type like '%表'
and hm.hm_number = v_hm_number);拿出来,可以添加数据但是整体的就不行了,是为什么呢,跪求大神指点!!!
...全文
247 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
我叫小超 2016-06-28
  • 打赏
  • 举报
回复
对,在函数中用insert方法,我是刚进公司,这种方法是以前的公司同事写的,这种方法有问题吗?
卖水果的net 2016-06-28
  • 打赏
  • 举报
回复
在函数中,执行 insert into 语句 ?
我叫小超 2016-06-28
  • 打赏
  • 举报
回复
大家我已经找到了解决办法,是需要添加一段代码, PRAGMA AUTONOMOUS_TRANSACTION; 我在网上查到的说是自治事务,具体我慢慢研究,但是添加上这段代码就可以用了。 第一次发帖,总得来说谢谢了,我准备结帖了。
我叫小超 2016-06-28
  • 打赏
  • 举报
回复
引用 1 楼 wang123kui 的回复:
没明白你的意思,而且你的需要的功能完全不用在函数中实现 ,函数也不应该像这样用
我是想用这个函数来制造数据!
桃花岛黄岛主 2016-06-28
  • 打赏
  • 举报
回复
没明白你的意思,而且你的需要的功能完全不用在函数中实现 ,函数也不应该像这样用

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧