plsql获取例外时,怎样得知错误的行号

 我来答
无时无刻的相恋
2017-01-05 · TA获得超过2641个赞
知道大有可为答主
回答量:1.7万
采纳率:25%
帮助的人:2723万
展开全部
PLSQL中查询语句的行号可以用ROWNUM(伪列)标识,
如SELECT ROWNUM,VT.* FROM V$TABLESPACE VT;
但PLSQL很少用行号查询数据库, 除非为了控制数据量
如SQLSERVER的SELECT TOP * ...
或PLSQL的SELECT * FROM <TABLE> WHERE ROWNUM =1, 或ROWNUM<10
进一步进行测试:
SQL1). SELECT ROWNUM,VT.* FROM V$TABLESPACE VT;
SQL2). SELECT ROWNUM,VT.* FROM V$TABLESPACE VT ORDER BY VT.NAME;
分析:对比1和2, 同一级的查询, ORDER BY排序不会影响ROWNUM编号(先产生ROWNUM后排序)
SQL3). SELECT ROWNUM,VT2.* FROM (SELECT VT.* FROM V$TABLESPACE VT ORDER BY VT.NAME) VT2;
分析:如希望用排序后的结果编号,则需将排序放在子查询中,再取ROWNUM
SQL4). SELECT * FROM (SELECT ROWNUM ,VT.* FROM V$TABLESPACE VT WHERE ROWNUM <10 ORDER BY VT.NAME) WHERE ROWNUM = 3;
无数据,分析:ROWNUM为全局伪列, 在解析时优先级高于子查询中的ROWNUM列
SQL5). SELECT * FROM (SELECT ROWNUM RN,VT.* FROM V$TABLESPACE VT WHERE ROWNUM <10 ORDER BY VT.NAME) A WHERE A.RN = 3;
得到指定行的数据分析:
子查询中ROWNUM编号需定义别名(本例中为"RN")后方可在条件中使用!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式