rownum是个伪列,意思是对最后输出的结果加一个序号
第一
select * from a where rownum=1;
如果输出若干行,那就只显示第一行
第二
select * from a where rownum=2;
如果输出若干行,那就显示第二行。可是,只有一行的结果哪里来的rownum=2???
所以未选定行
第一
select * from a where rownum=1;
如果输出若干行,那就只显示第一行
第二
select * from a where rownum=2;
如果输出若干行,那就显示第二行。可是,只有一行的结果哪里来的rownum=2???
所以未选定行
解决方案 »
- 列重名怎么办?
- oracle安装到C盘,ghost备份C盘,恢复系统非C盘表空间数据的恢复
- 关于OCI/OCCI批量插入数据的问题
- 有时会出现: ADODB.Recordset (0x800A0E78)对象关闭时不允许操作的错误
- 有没有人能告诉我,几个关于oracle日志的问题
- oracle如何截取ip地址
- 请问driving_site中包含多个表的语法?????select /*+driving_site(table1,table2,table3)*/??????
- 初学:关于TRIGGER 麻烦了各位大大
- oracle里怎么取当前时间?
- 请教高手,给高分
- GROUP BY 后面可加俩个相关函数,实现其子类的合算,请问这俩个相关函数是什么?
- 在oracle中的数据库活动跟踪问题!!!!
return number as
begin
return 1;
end;/////ok declare
nn number;
begin
select a_f() into nn from dual;
dbms_output.put_line(nn);
end;
/
也不会显示,rownum是伪列,如果等于时,只能是等于1,如果要等于2,可以用以下方法:
select * from a where rownum<=2
minus
select * from a where rownum<=1;
2.execute immediate 'call a_f() into :nn' using nn;
改为: nn:=a_f(); 试一下。
上面的这句回答有问题,简直误人子弟
-------------------------------------------
select * from a where rownum=2;
如果输出若干行,那就显示第二行。
-------------------------------------------
我也解释不清为什么,但是就是不能这样用
你可以用select * from (select rownum ad id,a.* from a) where id = 2;2
同意楼上的,补充一下,可以这样用:
declare
nn number;
begin
--execute immediate 'call a_f() into :nn' using nn;
n:=a_f();
dbms_output.put_line(nn);
end;
select * from (select rownum as id,a.* from a) where id = 2;是as,不是ad
select * from a where rownum=2; 未选定行rownum是一个伪列,他是对整个数据库的,不是对某个具体表的,
where rownum=1 的列不一定是a表的列,第一行能执行使偶然的;
where rownum=2 不能执行是没有这样的列或者列被删除
rownum 的值和a表字段的值不能混为一谈
select * from a where rownum=1; ok
select * from (select rownum rm,a.* from a) where rm=2; ok问题二:
set serveroutput on
declare
nn number;
begin
--execute immediate 'call a_f() into :nn' using nn;
select a_f into nn from dual; ok
nn:=a_f; ok
dbms_output.put_line(nn);
end;
/
我运行书的代码同样出错
同样谢谢大家
使用楼主的动态SQL 应该是:
declare
nn number;
begin
execute immediate 'call a_f() into :arg1' using out nn;
dbms_output.put_line(nn);
end;
楼主的错误:输出参数类型应使用 using out
我的意思是说
select * from a where rownum=2; 输出若干行-〉要求显示第二行,即最终只要一行输出结果。可是,只有一行的结果哪里来的rownum=2???
所以未选定行
我晕倒了,这样解释有错么?