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语句插入时没有错误。
请各位帮下忙啊~ 谢谢各位~ :) 展开
创建表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语句插入时没有错误。
请各位帮下忙啊~ 谢谢各位~ :) 展开
3个回答
展开全部
即使没有提交,如果有数据插入的话,你再次查询也会查询到已经插入的数据,只是没有提交而已。
现在是你根本就没有插入一条数据,说明你的 插入语句后的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;
现在是你根本就没有插入一条数据,说明你的 插入语句后的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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是忘记commit了?存储过程默认是不提交的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
存储过程里没有
commit;
commit;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |