a_sql := (N'SELECT TOP ' || a_TopN || N' ' || v_FieldShow || N' FROM ' || v_TableName || N' ' || v_Where || N' ' || v_FieldOrder) ;这个是我分页存储过程里面的一条sql,请问如何将这条sql转为oracle的额,里面的字段都是参数来着。谢谢了

解决方案 »

  1.   


    --这是我写的一个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;