Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向表中插入值时,Exact fetch返回的行数超过请求的行数错误

向表中插入值时,Exact fetch返回的行数超过请求的行数错误
EN

Stack Overflow用户
提问于 2021-10-14 20:03:32
回答 2查看 68关注 0票数 0

我正在开发PL/SQL,它通过使用序列和循环以增量方式将值插入到表中。有830行需要插入值。但是,它仍然显示错误ORA-01422: exact fetch在第11行返回的行数超过请求的行数。导致错误的变量类型是date。并且表的行中的所有日期值都应该与系统日期相同。我应该修复哪个部分才能让它在所有行中插入系统日期?

代码语言:javascript
运行
AI代码解释
复制
CREATE SEQUENCE ORDERID_SEQ
START WITH 11080
INCREMENT BY 1
NOCACHE;

DECLARE
LOOPCOUNT NUMBER :=1;
CUSTOMER ORDERS.CUSTOMERID%type;
EMPLOYEE ORDERS.EMPLOYEEID%type;
TERRITORY ORDERS.TERRITORYID%type;
ORDERINGDATE ORDERS.ORDERDATE%type;

BEGIN
LOOP
ORDERINGDATE := SYSDATE;
SELECT ORDERID_SEQ.NEXTVAL INTO CUSTOMER FROM ORDERS;
INSERT INTO ORDERS (CUSTOMERID) VALUES (CUSTOMER);
SELECT ORDERID_SEQ.NEXTVAL INTO EMPLOYEE FROM ORDERS;
INSERT INTO ORDERS (CUSTOMERID) VALUES (EMPLOYEE);
SELECT ORDERID_SEQ.NEXTVAL INTO TERRITORY FROM ORDERS;
INSERT INTO ORDERS (CUSTOMERID) VALUES (TERRITORY);
SELECT ORDERINGDATE INTO ORDERINGDATE FROM ORDERS;
INSERT INTO ORDERS (ORDERDATE) VALUES (ORDERINGDATE);
LOOPCOUNT := LOOPCOUNT+1;
EXIT WHEN LOOPCOUNT >= 830;
END LOOP;
END;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-14 21:21:04

嗯,你写的代码一点意义都没有。

如果要在ORDERS表中插入行,则应一次插入整行。使用与列数量一样多的INSERT语句将创建一行,该行中只有一列带有值,其余的将为空。请注意,一旦有一个留空的NOT NULL列,它就会失败。

除此之外,不带where子句的select将返回ORDERS表中的所有行(因此返回ORA-01422too_many_rows )。

为什么在一些列(customeremployeeterritory)和orderingdate中分别选择序列值?您真的应该在这些列中放入一个序列值吗?将orderingdate设置为sysdate意义不大,因为您随后将orderingdate (我假设这是orders表中的一个列名)选择到一个同名的变量中。

请注意,您不应该将变量命名为表中的列名。使用前缀,例如v_orderingdate

说你必须插入830行:为什么是830?您正在从ORDERS中选择并插入到ORDERS中。不是说这不可能,但是-你到底在做什么?考虑一下SQL (即非PL/SQL)级别(我猜是列名)的单个insert语句,而不是循环:

代码语言:javascript
运行
AI代码解释
复制
INSERT INTO orders (customerid,
                    employee,
                    territory,
                    orderingdate)
   SELECT orderid_seq.NEXTVAL,
          employee,
          territory,
          SYSDATE
     FROM some_other_table;
票数 1
EN

Stack Overflow用户

发布于 2021-10-14 20:21:46

PL/SQL不允许SELECT语句返回多个行(如果需要的话,必须使用游标)。因为是从ORDERS中选择,所以这些语句中的每一个都将返回与ORDERS表中当前的行数相同的行。相反,请尝试:

代码语言:javascript
运行
AI代码解释
复制
SELECT ORDERID_SEQ.NEXTVAL INTO CUSTOMER FROM DUAL;

诸若此类。并删除最后的SELECT (of ORDERINGDATE)。当您已经为其赋值时,您不需要从数据库中选择它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69579846

复制
相关文章
谁说MySQL单表行数不要超过2000W?
网上看了一篇文章《为什么说MySQL单表行数不要超过2000w》,亲自实践了一下,跟原作者有不同的结论。原文的结论是2000W左右性能会成指数级的下降,而我的结论是:随着数据量成倍地增加,查询的时间也刚好是成倍增加,是成正比的。
用户10002156
2023/08/07
4970
谁说MySQL单表行数不要超过2000W?
Power Query中如何插入指定行数据?
在Power Query中如果想要插入自定义的一行,有一个专门的函数Table.InsertRows,这个函数可以帮助我们在指定行的位置插入我们所需要的数据,但是这个函数需要我们把每一列的数据都要补上,但是大部分情况我们可能只需要在某一列中插入一个指定数据即可,这种该如何操作呢?
逍遥之
2020/03/24
6.1K0
【SQL】统计所有表的行数
原理:遍历所有用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,最后返回临时表
AhDung
2018/09/13
1.9K0
为什么说MySQL单表行数不要超过2000w?
作为在后端圈开车的多年老司机,是不是经常听到过,“mysql 单表最好不要超过 2000w”,“单表超过 2000w 就要考虑数据迁移了”,“你这个表数据都马上要到 2000w 了,难怪查询速度慢”
码猿技术专栏
2023/05/01
7560
为什么说MySQL单表行数不要超过2000w?
表扫描与索引扫描返回的行数不一致
某个应用最近总出现死锁,其中一些是因为报了索引和数据行存在不匹配的问题,MOS中有如下文档可以参考。 ORA-1499. Table/Index row count mismatch(文档 ID 563070.1) 现象: 使用“validate structure cascade”分析表时报ORA-1499的错误,trace文件中包含“Table/Index row count mismatch”的错误信息。例如: SQL> analyze table test validate structure cascade; analyze table test validate structure cascade * ERROR at line 1: ORA-01499: table/index cross reference failure - see trace file  trace文件中包含: Table/Index row count mismatch  table 6559 : index 10000, 0  Index root = tsn: 6 rdba: 0x01400091 意味着扫描表返回6559行数据,索引扫描返回10000行数据。“Index root”是索引的段头信息。rdba: 0x01400091是相对于数据块地址的索引段头。他是十进制的20971665,Rfile#=5,Block#=145。
bisal
2022/12/01
1.3K0
续《表扫描与索引扫描返回的行数不一致》
上篇文章主要介绍了如何从分析表得到的报错,以及trace中的信息,判断表返回的记录与索引返回记录不一致时的处理方式。下面这篇文章则介绍了针对ORA-1499进行问题排查的一些基本方法。
bisal
2022/12/01
8430
统计java代码行数和jar包中*.class代码的行数
2:统计指定目录下所有的*.jar 包中*.class 文件的代码行数,文件为 JarTotal.java(可单独运行)
全栈程序员站长
2022/07/19
1.5K0
MySQL 插入 100 行数据,用时最短的获得 Offer!
原文链接:http://rrd.me/enSqt
业余草
2019/10/22
1.2K0
如何正确的进行数据的分库分表
如果数据多到一定程度,就需要分库分表来存储数据了,这个一定程度的判断也比较难,总体而言,
jerryteng
2021/12/21
2K0
如何正确的进行数据的分库分表
Mybatis 向指定表中批量插入数据
Mybatis 向指定表中批量插入数据
Java架构师必看
2021/09/30
1.7K0
Java 使用异或进行数组元素交换时的坑 返回0的原因
但是这个方法当i与j相等时,相当于始终对一个数自己进行异或,我们知道两个一样的数异或结果为0
heasy3
2020/08/01
1.5K0
「开发日志」Navicat统计的行数竟然和表实际行数不一致?!
近期为了保障线上数据库的稳定性,我决定针对一些大表的历史数据有计划地进行备份迁移,但是呢,发现一个奇特的现象,Navicat统计行数和表自身count统计数竟然不一致!?0.0
程序员小明
2021/12/02
1.2K0
「开发日志」Navicat统计的行数竟然和表实际行数不一致?!
PHP案例:计算文件中的行数
作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 代码 效果 代码 <?php $lines=0;//初始行数为0行 if($fh=fopen('
贵哥的编程之路
2022/10/04
1.6K0
PHP案例:计算文件中的行数
如何使用python计算给定SQLite表的行数?
计算 SQLite 表中的行数是数据库管理中的常见任务。Python凭借其强大的库和对SQLite的支持,为此目的提供了无缝的工具。
很酷的站长
2023/08/11
6920
如何使用python计算给定SQLite表的行数?
查询数据库所有表行数
//查询所有表明 select name from sysobjects where xtype='u'
用户2657851
2020/03/04
2.7K0
EXACT函数_excel中的exact函数
EXACT函数:EXACT函数是一个文本函数,通过这个函数可以将不同的字符串进行对比,通常用于信息核对。
全栈程序员站长
2022/09/20
1.6K0
EXACT函数_excel中的exact函数
git查看提交行数、删除行数
统计指定用户提交代码情况 git log --author="你的名字" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' - 统计每个人的代码提交情况 git log --format='%aN' | sort -u | whil
HaC
2020/12/30
2.9K0
MYSQL统计行数时到底应该怎么COUNT
相信每个人在写代码时都有遇到过要获取MYSQL表里数据行数的情况,多数人获取数据表行数时都用COUNT(*),但同时也流传了不少其他方式,比如说COUNT(1)、COUNT(主键)、COUNT(字段)。到底哪种方式MYSQL执行起来更快也是众说纷纭,其实之前我也不知道到底哪个执行起来快,到底谁说的对(笑哭)。好在最近在认真学习极客时间的MySQL专栏,其中专门有一节是对这个问题的讨论,看完后也是解除了长久以来的疑惑。
KevinYan
2019/10/13
1.5K0
JS 中的网络请求 AJAX, Fetch, WebSocket
AJAX 是 Asynchronous JavaScript And XML 的简称,它可以让页面在不刷新的情况下从服务器获取数据。
羽月
2022/10/08
4.3K0
点击加载更多

相似问题

PL/SQL错误- exact fetch返回的行数超过请求的行数

20

01422。00000 - "exact fetch返回的行数超过请求的行数“

11

PL/SQL - Exact fetch返回的行数超过请求的行数

20

避免: exact fetch返回的行数超过PL/SQL中的请求行数错误

10

ORA-01422 - exact fetch返回的行数超过请求的行数错误

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档