posts - 495,comments - 227,trackbacks - 0
          一 oracle
          CREATE OR REPLACE PROCEDURE page(
          ??? p_num integer,
          ??? p_size integer,
          ??? condition clob,
          ??? table_name varchar,
          ??? p_rowset out sys_refcursor)
          AS
          BEGIN
          OPEN p_rowset FOR
          ??? 'SELECT *
          ??????? FROM (
          ??????????? SELECT ROWNUM r, t1.*
          ??????????????? FROM (
          ??????????????????? SELECT '|| table_name || '.* FROM '|| table_name || ' '?
          ????????????????????? || condition || 'ORDER BY happentime desc) t1
          ?????????????? WHERE ROWNUM <= ' || p_size*p_num || ' ) t2
          ??????? WHERE t2.r > ' || p_size*(p_num-1);
          END PAGE;

          二 mssql
          CREATE PROCEDURE page
          ??? @p_num int,
          ??? @p_size int,
          ??? @condition text,
          ??? @table_name nvarchar(100),
          ??? @current_page_size int
          AS
          if @p_num = 1
          ?? execute('SELECT TOP '+ @p_size +' * FROM '+ @table_name + ' '+ @condition +' ORDER BY happentime DESC')
          else
          ?? if @current_page_size != @p_size
          ????? execute('SELECT * FROM(
          ??????????????????? SELECT TOP '+ @current_page_size +' * FROM '+ @table_name + ' '+ @condition +' ORDER BY happentime
          ????????????? ) as t ORDER BY happentime DESC')
          ?? else
          ????? begin
          ????? declare @tmp int
          ????? set @tmp = @p_size * @p_num
          ????? execute('SELECT * FROM(
          ??????????????????? SELECT TOP '+ @p_size +' * FROM(
          ???????????????????????? SELECT TOP '+ @tmp +' * FROM '+ @table_name + ' '+ @condition +' ORDER BY happentime DESC
          ??????????????????? ) AS t1 ORDER BY happentime
          ????????????? ) as t2 ORDER BY happentime DESC')
          ????? end
          GO

          三 sybase
          CREATE PROCEDURE page
          ??? @p_num int,
          ??? @p_size int,
          ??? @condition? nvarchar(3000),
          ??? @table_name nvarchar(100),
          ??? @current_p_size int
          AS
          DECLARE @str_p_size varchar(20),
          ??????? @str_tmp varchar(20),
          ??????? @str_current_p_size varchar(20),
          ???? @i_rowcount?int?
          begin
          ?select @str_tmp=cast(@p_size * @p_num as varchar(20))
          ?select @str_p_size=cast(@p_size as varchar(20))
          ?select @str_current_p_size=cast(@current_p_size as varchar(20))
          ?
          ?if @p_num = 1
          ??begin
          ???set @i_rowcount=@p_size*@p_num
          ???set rowcount @i_rowcount
          ???execute('SELECT? * FROM '+ @table_name + ' '+ @condition +' ORDER BY happentime DESC')
          ??end
          ?else
          ??if @current_p_size != @p_size
          ???begin
          ????set rowcount @current_p_size
          ????execute('SELECT? * INTO #temp FROM '+ @table_name + ' '+ @condition +' ORDER BY happentime?
          ??????????? ?SELECT * FROM #temp ORDER BY happentime DESC')
          ???end
          ??else
          ???begin
          ????set @i_rowcount=@p_size*@p_num
          ????set rowcount @i_rowcount
          ????execute('SELECT? * INTO #temp1 FROM '+ @table_name + ' ' + @condition +' ORDER BY happentime DESC
          ????? ?SELECT TOP '+ @str_p_size + ' * INTO #temp2 FROM #temp1 ORDER BY happentime
          ????? ?SELECT * FROM #temp2 ORDER BY happentime DESC')
          ???end
          end
          posted on 2006-05-26 11:02 SIMONE 閱讀(377) 評論(0)  編輯  收藏 所屬分類: 收藏
          主站蜘蛛池模板: 盘锦市| 寿宁县| 博湖县| 涟源市| 丹江口市| 永州市| 郁南县| 昌图县| 南城县| 台北市| 安达市| 宁化县| 崇义县| 商城县| 汉阴县| 开江县| 乌鲁木齐市| 达拉特旗| 长岛县| 黄冈市| 县级市| 申扎县| 兴安县| 天长市| 青田县| 集安市| 巴林右旗| 湟中县| 句容市| 丹凤县| 盐城市| 平塘县| 辽宁省| 资源县| 金塔县| 诸城市| 卫辉市| 紫阳县| 杭锦旗| 化德县| 扎兰屯市|