此語法在版本11.50或11.70中不可用。
這裏的可行選項是創建您自己的UDR(用戶定義的例程=過程)來模擬情況。
會有一些限制...
這是我的版本ROW_NUMBER的....
create procedure row_number(initial integer) returning integer as row_number;
define global i integer default 0;
if initial = 0 then
let i = 0;
return 0 ;
end if;
let i = i+1;
return i ;
end procedure
document "Simplified and similar function to row_number() from SqlServer.",
"Need to reset the counter before each sql statement with ",
"execute procedure row_number(0) OR declare into FROM clause",
"For use in SELECT statement use any other number in parameter:",
"select row_number(1) , tabname from systables;",
"OR select row_number(1) , tabname from systables, table(row_number(0))",
"By Cesar Inacio Martins - www.imartins.com.br"
with listing in "/tmp/row_number.out"
;
Routine created.
;
-- Here the syntax of call should always be the same, row_number(1) to
-- the field and table(row_number(0)) for table
select first 5 row_number(1), tabname::char(20)
from systables, table(row_number(0));
(expression) (expression)
1 systables
2 syscolumns
3 sysindices
4 systabauth
5 syscolauth
5 row(s) retrieved.
select first 5 row_number(1), tabname::char(20)
from systables, table(row_number(0))
order by 1 desc;
(expression) (expression)
245 SMIVERSION
244 sysextspaces
243 syscompdicts
242 syscmsm
241 syssqexplain
5 row(s) retrieved.
什麼版本的Informix您使用的是?如果我正確解釋文檔(http://pic.dhe.ibm.com/infocenter/informix/v121/index.jsp?topic=%2Fcom.ibm.sqls.doc%2Fids_sqs_2583.htm),這應該適用於Informix 12.10或更新。 –
我用INFORMIX 11 –