1

由于需要在(ASP.NET)网站的网格视图中显示记录。同样,我正在使用过程将数据返回到 .net 框架。

因为我的问题是我需要设置表并返回当前行的(数据)编号。页。而且我还需要总行数进行分页(显示页数)。

同样,我写了以下是我返回的程序

    CREATE PROCEDURE usp_SearchEmp(IN _RowIndex int, IN _MaxRows int , IN _SortByCol  varchar(40),IN _EmployeeID int)
 DECLARE _getLastSequenceNumberSQL VARCHAR(4000);
set _getLastSequenceNumberSQL ='
    SELECT SQL_CALC_FOUND_ROWS 
    @rownum:=@rownum+1 ROW,
        E.EmployeeID,
        E.EmployeeName  
    from
    (SELECT @rownum:=0) r, Employee E ;
        IF (_EmployeeID IS NOT NULL) THEN
              set _getLastSequenceNumberSQL = concat(_getLastSequenceNumberSQL,' WHERE (E.EmployeeID=',_EmployeeID,')');
        END IF;

        IF (_SortByCol IS NOT NULL) AND (_SortByCol != "") THEN
              set @SortCol = concat(' ORDER BY ', _SortByCol) ;
        ELSE
               set @SortCol = 'ORDER BY EmployeeName';
        END IF;

      set _getLastSequenceNumberSQL = concat(_getLastSequenceNumberSQL, @SortCol , ' LIMIT ',  _RowIndex, ' , ' , _MaxRows,' ');

 SET @getLastSequenceNumberSQL = _getLastSequenceNumberSQL;

  prepare lastRecordStmt from @getLastSequenceNumberSQL;
  execute lastRecordStmt;
  deallocate prepare lastRecordStmt;

    select FOUND_ROWS() as i;

但现在的问题是,当我从 .net 调用此过程时,它只返回 Found_Rows 的结果。

 I need out put . some thing like the following 

喜欢 :-

SELECT 64 AS `ROWMAX`, E.EmployeeID, E.EmployeeName FROM Employee E order by EmployeeID LIMIT 0 , 4

|--------------------------------------------------------------|

| ROWMAX  | EmployeeID | EmployeeName                          |

|--------------------------------------------------------------|

|  64     |    1       | Emp One                               |

|  64     |    2       | Emp Two                               |

|  64     |    3       | Emp Three                             |

|  64     |    4       | Emp Four                              |

----------------------------------------------------------------

因为我可以使用 ROWMAX 列来证明网格视图中的页数。

所以请指导我。因为我是 MYSQL 的新手

4

3 回答 3

2

As you can make dynamic Procedure . which will just count all the MaxNo of Row. and will return the same. and can call the same from different Procedure.'s

于 2011-03-21T11:25:42.250 回答
2

如果您可以使用多查询,您可以在同一过程中有 2 个结果集(即添加一个 SELECT FOUND_ROWS(); 在查询之后并使用 LIMIT 仅显示一页结果)

这是一篇关于在 PHP 中实现它的好帖子: http ://www.robert-gonzalez.com/2007/06/01/mysql-multiple-result-procs-in-php/

于 2012-11-23T15:33:35.563 回答
1

我们可以使用从 MainProcedure 调用的其他 PROCEDURE(比如说 Main Procedure)。

假设 ProcedureCound 它将包含 Pr 构建 sql 查询“SELECT COUNT(*)” 并将接受两个参数(参数)

1) 将是 out 参数 2) 将是动态生成的 From 条件。在主程序中。

所以现在需要附加第二个参数,其中包含我们从主过程中获得的条件。并将结果存储到 out 参数中,我们可以将其访问回主过程。

于 2011-03-09T06:52:39.003 回答