楼主是要求最后一行还是最后一列? 如果是最后一行,可以参考如下代码: SELECT DISTINCT LAST_VALUE(ENAME) OVER () LAST_NAME, LAST_VALUE(DEPTNO) OVER () LAST_DEPTNO, LAST_VALUE(SAL) OVER () LAST_SAL FROM SCOTT.EMP;LAST_NAME LAST_DEPTNO LAST_SAL ---------- ----------- ---------- MILLER 10 1300SELECT ENAME,DEPTNO,SAL FROM SCOTT.EMP;ENAME DEPTNO SAL ---------- ---------- ---------- SMITH 20 800 ALLEN 30 1600 WARD 30 1250 JONES 20 2975 MARTIN 30 1250 BLAKE 30 2850 CLARK 10 2450 SCOTT 20 3000 KING 10 5000 TURNER 30 1500 ADAMS 20 1100ENAME DEPTNO SAL ---------- ---------- ---------- JAMES 30 950 FORD 20 3000 MILLER 10 1300已选择14行。
最后一列用过程处理 不过感觉有点奇怪create or replace procedure proc(tabname in varchar2) as sqlstr varchar2(2000):='create or replace view viewtmp as select '; v varchar2(100); begin select column_name into v from( select t.*,row_number()over(order by column_id desc)rn from user_tab_cols t where table_name=upper(tabname)) where rn=1; sqlstr:=sqlstr||v||' from '||tabname; execute immediate sqlstr; --dbms_output.put_line(sqlstr); end proc; 调用execute proc('tablename'); 然后 select * from viewtmp 来查询
获取(最后一行不是最后一列) 如果数据没有删除 可以用ROWID来判断 select * from a where rowid = (select max(rowid) from a)
select Column_name from user_tab_cols where table_name='BMX_FILE' and Column_id= (select max(Column_id) from user_tab_cols where table_name='BMX_FILE' )
having rownum = max(rownum)
SELECT DISTINCT
LAST_VALUE(ENAME) OVER () LAST_NAME,
LAST_VALUE(DEPTNO) OVER () LAST_DEPTNO,
LAST_VALUE(SAL) OVER () LAST_SAL
FROM SCOTT.EMP;LAST_NAME LAST_DEPTNO LAST_SAL
---------- ----------- ----------
MILLER 10 1300SELECT ENAME,DEPTNO,SAL FROM SCOTT.EMP;ENAME DEPTNO SAL
---------- ---------- ----------
SMITH 20 800
ALLEN 30 1600
WARD 30 1250
JONES 20 2975
MARTIN 30 1250
BLAKE 30 2850
CLARK 10 2450
SCOTT 20 3000
KING 10 5000
TURNER 30 1500
ADAMS 20 1100ENAME DEPTNO SAL
---------- ---------- ----------
JAMES 30 950
FORD 20 3000
MILLER 10 1300已选择14行。
不过感觉有点奇怪create or replace procedure proc(tabname in varchar2)
as
sqlstr varchar2(2000):='create or replace view viewtmp as select ';
v varchar2(100);
begin
select column_name into v from(
select t.*,row_number()over(order by column_id desc)rn from user_tab_cols t where table_name=upper(tabname))
where rn=1;
sqlstr:=sqlstr||v||' from '||tabname;
execute immediate sqlstr;
--dbms_output.put_line(sqlstr);
end proc;
调用execute proc('tablename');
然后
select * from viewtmp
来查询
如果数据没有删除
可以用ROWID来判断
select * from a
where rowid = (select max(rowid) from a)
user_tab_cols where table_name='BMX_FILE'
and Column_id=
(select max(Column_id) from user_tab_cols
where table_name='BMX_FILE' )