jscly 2015-12-14 13:11 采纳率: 0%
浏览 1568
已结题

求救!用oracle11g实现人事管理数据库设计,在循环键盘输入信息时遇到错误!

我现在做用oracle实现人事管理数据库,遇到了很严重的问题,请各位路过的大侠帮帮忙!!!
它的要求和部分代码如下:
我用的是oracle 11g,用cmd进行以下操作,我的用户名已创建(user_name1),被授予了需要用到的权限,创建了3个表空间orcltbs1_1、orcltbs1_2、orcltbs1_3都是(300m的容量)用来完成要求1。
要求:
1、员工表(按出生日期建立分区表)create table emp(empnum varchar2(16) primary key,
empname varchar2(16) not null,
sex number not null constraint s_ck1 check(sex in(0,1)),
birthday date not null,
nation varchar2(10) not null,nativeplace varchar2(40) not null,Ident varchar2(16) not null,department varchar2(16) not null,
marriage number not null constraint s_ck2 check(marriage in(0,1)),address varchar2(40),policy varchar(10) not null,
phone varchar2(16) not null,degree varchar(10) not null,college varchar2(40) not null,duty varchar2(16),title varchar2(16),
sort varchar(10) not null,remark varchar2(400))
partition by range(birthday)
(partition p1 values less than(to_date('1970-1-1','yyyy-mm-dd'))tablespace orcltbs1_1,
partition p2 values less than (to_date('1990-1-1','yyyy-mm-dd'))tablespace orcltbs1_2,
partition p3 values less than (maxvalue) tablespace orcltbs1_3);

2、创建一个存储过程p_inputInfo,通过该过程完成员工基本信息的录入;
create or replace procedure p_inputInfo(
p_empnum emp.empnum%type,
p_empname emp.empname%type,
p_sex emp.sex%type,
p_birthday date,
p_nation varchar2,p_nativeplace varchar2,p_Ident varchar2,p_department varchar2,p_marriage number,p_address varchar2,p_policy varchar2,p_phone varchar2,p_degree varchar2,p_college varchar2,p_duty varchar2,p_title varchar2,p_sort varchar2,p_remark varchar2
)
as
begin
insert into emp values(p_empnum,
p_empname,
p_sex,
p_birthday,
p_nation,p_nativeplace,p_Ident,p_department,p_marriage,p_address,p_policy,p_phone,p_degree,p_college,p_duty,p_title,p_sort,p_remark
);
end p_inputInfo;
3、创建一个存储过程调用p_inputInfo,利用键盘输入职工信息,能够循环输入,每次输入完,要提示继续吗?输入Y继续下一个职工信息输入,输入其它字母,退出输入。
declare
p_panduan varchar2(10);
p_empnum emp.empnum%type;
p_empname emp.empname%type;
p_sex emp.sex%type;
p_birthday emp.birthday %type;
p_nation emp.nation%type;
p_nativeplace emp.nation%type;
p_Ident emp.Ident %type;
p_department emp.department %type;
p_marriage emp.marriage %type;
p_address emp.address %type;
p_policy emp.policy %type;
p_phone emp.phone %type;
p_degree emp.degree %type;
p_college emp.college %type;
p_duty emp.duty %type;
p_title emp.title %type;
p_sort emp.sort %type;
p_remark emp.remark %type;

begin
loop
p_empnum:='&num';
p_empname:='&nam';
p_sex:='&sex';
p_birthday:=&birthda;
p_nation:='&natio';
p_nativeplace:='&nativeplac';
p_Ident:='&iden';
p_department:='&dept';
p_marriage:='&marriag';
p_address:='&addres';
p_policy:='&polic';
p_phone:='&phon';
p_degree:='&degre';
p_college:='&colleg';
p_duty:='&dut';
p_title:='&titl';p_sort:='&sor';p_remark:='&remar';
--(第40行)
p_inputInfo(p_empnum,
p_empname,
p_sex,
p_birthday,
p_nation,
p_nativeplace,
p_Ident,
p_department,
p_marriage,
p_address,
p_policy,
p_phone,
p_degree,
p_college,
p_duty,
p_title,
p_sort,
p_remark);
dbms_output.put_line('是否继续输入?输入Y继续下一个职工信息输入,输入其它字母,退出输入');
--(第59行)
p_panduan:=&panduan;
exit when p_panduan != 'y';
end loop;
end;

操作结果:
输入员工信息,然后输入n的话,是可以把数据插入emp表;但是!!
输入员工信息,然后输入y的话,出现以下错误:第 1 行出现错误:
ORA-00001: 违反唯一约束条件 (user_name1.SYS_C0011485)
ORA-06512: 在 "user_name1.P_INPUTINFO", line 10(也就是P_INPUTINFO这个存储过程的as,应该没什么错吧?)
ORA-06512: 在 line 41
我试过用系统管理员身份,删除掉SYS_C0011485这个约束条件,但是当输入员工信息,然后输入y后,cmd光标一直不动,同时,相应的表空间的可用容量也会越来越少。比如:我输入以下员工信息:p_empnum:='12345';
p_empname:='isi';
p_sex:=0;
p_birthday:=to_date('1979-11-6','yyyy-mm-dd');
p_nation:='han';
p_nativeplace:='gda';
p_Ident:='12345632';
p_department:='ywb';
p_marriage:=0;
p_address:='gdaadsz';
p_policy:='qz';
p_phone:='12345';
p_degree:='daxue';
p_college:='zadsadsk';
p_duty:='jl';
p_title:='jl';p_sort:='jl';p_remark:='wu';
我用dba身份运行:select tablespace_name,sum(bytes) free_spaces from dba_free_space group by tablespace_name;
发现orcltbs1_2的可用容量越来越少,最后cmd出现以下提示:
declare
*
第1行出现错误:
ora-01688:表user_name1.emp分区p2无法通过128(在表空间orcltbs1_2扩展)
ora-06512:在“user_name.p_inputinfo”,line 10
ora-06512:在line 41

请问各位,为什么这种情况下表空间会越来越少?是我的代码有什么逻辑错误吗?
还有,我这个系统要求的是能够循环键盘输入员工信息(至少输入2个员工的信息),请问各位,我的第三个要求的代码哪里错了?麻烦帮我指出来、改正!!
这个东西搞了一天了,不搞出来总觉得是前功尽弃,望各位大侠施以援手!!!万分感谢!

  • 写回答

2条回答 默认 最新

  • 我说假如 2015-12-15 08:07
    关注

    额。。。你截图好吧?有些错误不知道报错的地方

    评论

报告相同问题?

悬赏问题

  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)