a_sql := (N'SELECT TOP ' || a_TopN || N' ' || v_FieldShow || N' FROM ' || v_TableName || N' ' || v_Where || N' ' || v_FieldOrder) ;这个是我分页存储过程里面的一条sql,请问如何将这条sql转为oracle的额,里面的字段都是参数来着。谢谢了
--这是我写的一个oracle分页的存储过程 楼主参考下 create or replace procedure fenye_pro( v_tablename varchar2, --表名 v_pagesize int, --一页显示的记录数 v_pagenow int,--要显示第几页 v_pagerows out number,--总页数 v_counts out number,--总记录数 recode_cursor out sys_refcursor) as v_begin number:=1+(v_pagenow-1)*v_pagesize; v_end number:=v_pagenow*v_pagesize; v_sqlstr varchar2(4000); v_flag number:=0; begin select count(*) into v_flag from user_tables where table_name=v_tablename; if v_flag=0 then dbms_output.put_line('输入的表'||v_tablename||'不存在'); else v_sqlstr:='select count(*) from '||v_tablename; execute immediate v_sqlstr into v_counts; v_pagerows:=ceil(v_counts/v_pagesize); v_sqlstr:='select * from (select rownum rn,t.* from (select * from '||v_tablename|| ') t where rownum<='||v_end||') where rn>='||v_begin; open recode_cursor for v_sqlstr; --dbms_output.put_line(v_sqlstr); end if; exception when others then dbms_output.put_line('参数输入格式或类型不符'); end;
--这是我写的一个oracle分页的存储过程 楼主参考下
create or replace procedure fenye_pro(
v_tablename varchar2, --表名
v_pagesize int, --一页显示的记录数
v_pagenow int,--要显示第几页
v_pagerows out number,--总页数
v_counts out number,--总记录数
recode_cursor out sys_refcursor)
as
v_begin number:=1+(v_pagenow-1)*v_pagesize;
v_end number:=v_pagenow*v_pagesize;
v_sqlstr varchar2(4000);
v_flag number:=0;
begin
select count(*) into v_flag from user_tables where table_name=v_tablename;
if v_flag=0 then
dbms_output.put_line('输入的表'||v_tablename||'不存在');
else
v_sqlstr:='select count(*) from '||v_tablename;
execute immediate v_sqlstr into v_counts;
v_pagerows:=ceil(v_counts/v_pagesize);
v_sqlstr:='select * from (select rownum rn,t.* from (select * from '||v_tablename||
') t where rownum<='||v_end||') where rn>='||v_begin;
open recode_cursor for v_sqlstr;
--dbms_output.put_line(v_sqlstr);
end if;
exception
when others then
dbms_output.put_line('参数输入格式或类型不符');
end;