oracle 用存储过程向表插入数据的问题

我们的题目是:创建表dept_avgsal(deptno,avgsal,nums_low)用存储过程完成以下功能:查询emp中各个部门的部门号,各个部门的平均工资及部门内... 我们的题目是:

创建表dept_avgsal(deptno,avgsal,nums_low)
用存储过程完成以下功能:
查询emp中各个部门的部门号,各个部门的平均工资及部门内低于平均工资的职员的个数。将查出来的值插入到dept_avgsal表中。

我的代码是:
创建表:
CREATE TABLE dept_avgsal(deptno varchar2(10),
avgsal varchar2(40),
nums_low varchar2(10))
存储过程:
(两层嵌套,里面选择出各部门号和各部门平均工资,外面再count出各部门符合条件的人数)
create or replace procedure dept_avgsal_ is
begin
insert into dept_avgsal
select t.deptno, a.avgsal, count(*)
from scott.emp t left join
(select avg(sal) as avgsal, deptno
from scott.emp
group by deptno) a
on t.deptno = a.deptno
--从原表和新表链接的表中
where t.sal < a.avgsal
group by t.deptno, a.avgsal;
end dept_avgsal_;
执行存储过程:
-- Created on 2013-6-30 by ADMINISTRATOR
declare
-- Local variables here
begin
dept_avgsal_;
-- Test statements here
end;
但是,当我再查看dept_avgsal_表时,没有数据,并且用SQL语句插入时没有错误。
请各位帮下忙啊~ 谢谢各位~ :)
展开
 我来答
百度网友0319a0e
2013-06-30 · TA获得超过2.2万个赞
知道小有建树答主
回答量:2080
采纳率:85%
帮助的人:1152万
展开全部
即使没有提交,如果有数据插入的话,你再次查询也会查询到已经插入的数据,只是没有提交而已。
现在是你根本就没有插入一条数据,说明你的 插入语句后的select 语句根本就没有检索到数据啊。
你执行 这个查询 有数据吗?
select t.deptno, a.avgsal, count(*)
from scott.emp t left join
(select avg(sal) as avgsal, deptno
from scott.emp
group by deptno) a
on t.deptno = a.deptno
--从原表和新表链接的表中
where t.sal < a.avgsal
group by t.deptno, a.avgsal;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
猿界汪汪队
2013-06-30 · TA获得超过116个赞
知道小有建树答主
回答量:157
采纳率:0%
帮助的人:142万
展开全部
是不是忘记commit了?存储过程默认是不提交的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
厍曼冬6o
2013-06-30 · TA获得超过1569个赞
知道小有建树答主
回答量:1336
采纳率:0%
帮助的人:1204万
展开全部
存储过程里没有
commit;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式