Hex 发表于 2007-11-27 18:20:40

[2.0.2]MSSQL 分页方法(limit)

在 MSSQL 数据库驱动中,“_limit”函数无效,所以要修改“mssql_driver.php”这个文件。
修改文件“system/database/drivers/mssql/mssql_driver.php”中的“_limit”函数为:function _limit($sql, $limit, $offset)
{
$cursorName = 'mi_cursor_'.md5(strtolower($sql));
$sql = "DECLARE ".$cursorName." CURSOR DYNAMIC READ_ONLY FOR
    ".$sql."
    OPEN ".$cursorName."
    DECLARE @CURSOR AS INT
    SELECT @CURSOR = CURSOR_HANDLE FROMMASTER.DBO.SYSCURSORS
    WHERE CURSOR_NAME = '".$cursorName."'
    EXEC SP_CURSORFETCH @CURSOR, 32, ".($offset+1).", ".$limit."
    EXEC SP_CURSORCLOSE @CURSOR";
    return $sql;
}

ChrisMao 发表于 2007-11-27 21:42:27

只要修改这一个函数就可以了吗?

Hex 发表于 2007-11-27 23:26:47

是的,你试试吧,反正我这里没问题。

ChrisMao 发表于 2007-11-28 08:38:38

能讲讲这几句代码的意思吗?谢谢

我把代码加上去了,好像没起任何作用。还有其他地方要做修改吗?

Hex 发表于 2007-11-28 09:32:06

不可能没作用吧,你看看修改的地方对吗,还有你的模型写的对吗?看看分页教程?

ChrisMao 发表于 2007-11-28 12:49:38

模型写的应该是正确的,可以获得数据,只是没有分页,而是全部显示

Hex 发表于 2007-11-28 13:58:02

你在数据库查询里,用 limit() 这个函数了吗?
还是你自己手写的 SQL 语句?
MSSQL 分页问题主要是由于 MSSQL 没有 limit 这个东西。
不知道你那个是不是这个问题呢?

ChrisMao 发表于 2007-11-29 08:58:23

我用的是MSSQL数据库,SQL语句如下:
SELECT Staff_ID, Staff_Name, Official_Name, Title, Brief FROM Staff_Brief Order By Staff_ID


我应该在什么地方调用Limit函数呢?能给个例子吗?谢谢先

Hex 发表于 2007-11-29 10:09:35

哦!你没用 Active Record 啊!那你就得自己写 SQL 了,我给你的代码就没用了,如果你用 AR 写就可以分页了。

ChrisMao 发表于 2007-11-29 13:04:40

能给个用AR的DEMON吗?
页: [1] 2 3
查看完整版本: [2.0.2]MSSQL 分页方法(limit)