ORA-01427:单行子查询返回多个行

select字段1into变量afrom表Awhere条件哪有问题啊?... select 字段1

into 变量a
from 表A
where 条件

哪有问题啊?
展开
 我来答
Xummer_昔年
2018-03-31 · TA获得超过2.1万个赞
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:9.4万
展开全部

由于查询结果有多行造成,确保查询结果只有一行数据。这样就不会报错了。

【错误例子】

“select a.id,a.case_id,e.case_name,e.case_code,(select enddate from ol_apply_process where id=a.id and result =10) as enddate from ol_apply a,ol_case e”,报错ORA-01427:单行子查询返回多个行。

解决方法:

查询中肯定有返回多行的情况,试着在子查询中加入rownum<2,也就是限制返回一行数据。

更改后的:

“select a.id,a.case_id,e.case_name,e.case_code,(select enddate from ol_apply_process where id=a.id and result =10 and rownum=1) as enddate from ol_apply a,ol_case e”。

流浪云风
推荐于2017-11-18 · TA获得超过4315个赞
知道大有可为答主
回答量:1119
采纳率:69%
帮助的人:928万
展开全部
这个错误是由于你的查询结果有多行造成的,因为你要into给变量a,所以只能查出一行,应该在where条件处控制,确保查询结果只有一样数据。这样就不会报错了。
如果不能确定记录为一行,可以这样写:select 字段1 into 变量a from 表a where 条件 and rownum = 1;
更多追问追答
追问
1、rownum=1的作用是什么,我才初学
2、这个是我在存储过程中写的,我where中的条件判断是根据参数中的值写的,那应该就是传进来的唯一的那一条啊,这是为什么呢
追答
1.rownum是oracle的伪列,通常用来做每条记录的序号。由于rownum必须从1开始记录,所以当where条件中写rownum=1时,就只能查到结果集中第一条记录,从而达到只查出一条记录的目的。

2.你的数据为什么不唯一我不清楚,我看不到你的数据,我只能说,出现这个错误,肯定是结果记录数>1你把语句拿到sql窗口查询一下,看看结果,如果是数据问题,删除多余数据就行了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hanliwoyaoai
2012-10-31 · TA获得超过416个赞
知道小有建树答主
回答量:593
采纳率:0%
帮助的人:462万
展开全部
select 字段1

-- into 变量a
from 表A
where 条件
根据条件 查出来多行 字段1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
myohmy1
2013-05-27 · TA获得超过1095个赞
知道小有建树答主
回答量:436
采纳率:100%
帮助的人:389万
展开全部
变量适用于单个值 你where条件里检索出来的值可能是多个 这个时候可以把这些值放到游标里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雒城卫士咸老湿
2016-07-19 · 实践才是验证真理的唯一标准,永远是正确的
雒城卫士咸老湿
采纳数:160 获赞数:1081

向TA提问 私信TA
展开全部
不能用=号 用 in
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式