• ORA-00913错误:PL/SQL: ORA-00913: too many values


    ORA-00913错误


    描写叙述:PL/SQL: ORA-00913: too many values


    目标:编写一个能够循环插入数据的脚本


    操作过程:

    SQL> desc tcustmer
    Name               Null?    Type
     ----------------- -------- ----------------------------
     CUST_CODE         NOT NULL VARCHAR2(10)
     NAME                       VARCHAR2(30)
     CITY                       VARCHAR2(20)
     STATE                      CHAR(2)


    SQL>CREATE SEQUENCE tcustmer_cust 
          INCREMENT BY 1
          START WITH 1
          MAXVALUE 100000000
          CACHE 10000
          NOCYCLE; 
          
    SQL> begin
      2       for i in 1..10 loop
      3         insert into tcustmer
      4         values (tcustmer_cust.nextval,'T','test'||i,'BEIJING','CN');
      5         if mod(i,10)=0 then 
      6         commit;
      7         end if;
      8      end loop;
      9      commit;
     10  end;
     11  /
           insert into tcustmer
                       *
    ERROR at line 3:
    ORA-06550: line 3, column 20:
    PL/SQL: ORA-00913: too many values
    ORA-06550: line 3, column 8:
    PL/SQL: SQL Statement ignored


    检查发现插入的values值,列数超过了tcustmer表的列数
    调整例如以下:
    SQL>begin
         for i in 1..10 loop
           insert into tcustmer
           values ('T'||tcustmer_cust.nextval,'test'||i,'BEIJING','CN');
           if mod(i,10)=0 then 
           commit;
           end if;
        end loop;
        commit;
    end;
    /
    PL/SQL procedure successfully completed.

    总结:

        对于tcustmer_cust.nextval理解错误,创建序列的目的正是消除主键的干扰,所以在使用的时候须要将其放到列值中。



  • 相关阅读:
    Spring的历史和哲学
    CORS简介
    LDAP概念了解
    Restful levels&HATEOAS
    python/mysql connector
    Session&Cookie 简介及使用
    XML简介
    Json简介
    《魅族官网》
    期末设计部分代码截图
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3988015.html
Copyright © 2020-2023  润新知