我有一张表donor_master:
create table donor_master ( donor_id number(10) primary key not null, dob date not null, age number(3) not null, gender char(1) not null, blood_group char(3), contact_no number(10), address varchar(50) not null, city varchar(10) not null, pin number(10) not null, state varchar(10) not null, branch_registration_id number(5) references branch_master(branch_id) );
当我尝试在过程insert_donor_master中插入表时,编译时出现“没有足够的值”错误。
这是过程:
create or replace procedure insert_donor_master( vdob donor_master.dob%type, vage donor_master.age%type, vgender donor_master.gender%type, vblood_group donor_master.blood_group%type, vcontact_no donor_master.contact_no%type, vaddress donor_master.address%type, vcity donor_master.city%type, vpin donor_master.pin%type, vstate donor_master.state%type, vbranch_registration_id donor_master.branch_registration_id%type ) is begin insert into donor_master values (sq_donor_master.nextval, vdob, vage, vgender, vblood_group, vcontact_no, vaddress, vcity, vpin, vstate, vbranch_registration_id); commit; end;
问题是什么?
谢谢。
当我们指定一个INSERT语句(该值对于表中的每一列都没有值)时,Oracle发出ORA-00947。
现在,您发布的CREATE TABLE语句显示了一个包含11列的表。您发布的存储过程代码在VALUES(…)子句中显示带有11个值的插入语句。
因此,解释为:
请注意,如果您不想填充每一行,则可以在VALUES子句之前指定相关列的投影。例如,如果您只想填充必填列,则可以编写以下代码:
insert into donor_master (donor_id, dob, age, gender, address, city, pin, state ) values (sq_donor_master.nextval, vdob, vage, vgender, vaddress, vcity, vpin, vstate)
重要的是值的数量与列的数量匹配。
文档中提供了INSERT语句的完整语法。 在此处输入链接描述了解更多。