当前位置: 首页 > 面试题库 >

oracle错误:值不足

乐正心水
2023-03-14
问题内容

我有一张表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个值的插入语句。

因此,解释为:

  1. 您遇到配置管理问题,并且正在运行错误版本的存储过程或错误版本的表
  2. 您遇到配置管理问题,并且表的实际结构与您认为的不一样(与您的CREATE TABLE脚本不匹配)
  3. 您并没有真正收到ORA-00947错误

请注意,如果您不想填充每一行,则可以在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语句的完整语法。
在此处输入链接描述了解更多。



 类似资料:
  • 我实现了一个返回clob数据类型的函数,我希望在DBMS输出中打印结果。不幸的是,我得到了ORA-06502:PL/SQL:numeric或value错误,我认为这是由于dbms_output的大小造成的。 这是密码。 这里有一些东西可以帮助您理解这个问题 1)添加了以下内容来设置缓冲区的大小不受限制,但不起作用… 3)我可以通过执行以下操作来解决这个问题,但我认为这不是一个好的解决方案,因为它执

  • 我正在websphere 7.0版本上运行一个应用程序,该应用程序是在我的QA环境中新设置的,并且低于oracle错误

  • 第1行错误: ORA-00604:递归SQL级别1发生错误 ORA-01031:权限不足 P. S.:我已经添加了系统特权。

  • 问题内容: 我有这样的代码: 实际上,我的表名是CARS,但不是CAR。但是oracle无法处理此异常,并给我一个错误ORA-00942:表或视图不存在。我该如何处理该异常? 问题答案: 您不能使用静态SQL来做到这一点。当代码正在编译而不执行时,将出现错误。尝试以下方法:

  • 我正在运行spark作业以加载到Oracle。但我得到以下错误。 ORA-01882:未找到时区区域 这是我代码中的内容 相同的代码适用于Spark-Shell,但不适用于Spark-Shell。相同的火花提交在其他集群上工作。感谢你的帮助!

  • 我正在创建一个表,我输入了这个命令: 我得到了这个错误: 有人能告诉我错误在哪里以及如何纠正吗?