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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序