出現問題的程式碼如下:
| 12
 3
 4
 5
 
 | <?php$sSQL = "select ..."; //超過 300 個字元的SQL指令
 $proc = mssql_init('MyPagingRecordSet', $db_link);
 mssql_bind($proc, '@strSQL', $sSQL, SQLVARCHAR, false, false) or print_r(error_get_last());
 ?>
 | 
執行的預儲程序
| 12
 3
 4
 5
 6
 7
 
 | CREATE PROCEDURE MyPagingRecordSet@strSQL VARCHAR(1000),  --查詢 sql,如 select * from [user]
 @PageIndex INT = 1,     --查詢的頁號
 @PageSize INT = 30      --每頁顯示紀錄數
 AS
 --省略內容
 GO
 | 
不過當 $sSQL 變數內只有很短的 SQL 命令時, 程式是可以正常執行的, 所以改成指定參數長度如下:
| 1
 | mssql_bind($proc, '@strSQL', $sSQL, SQLVARCHAR, false, false, 1000) or print_r(error_get_last()); | 
執行結果還是一樣的錯誤訊息, 這應該是字串長度導致的問題, 再把程式改成
| 1
 | mssql_bind($proc, '@strSQL', $sSQL, SQLTEXT, false, false) or print_r(error_get_last()); | 
這樣就可以正常執行了, 而 Stored Procedure 的參數的資料型別也可以改成
| 12
 3
 4
 5
 6
 7
 
 | CREATE PROCEDURE MyPagingRecordSet@strSQL text,        --查詢 sql,如 select * from [user]
 @PageIndex INT = 1,  --查詢的頁號
 @PageSize INT = 30   --每頁顯示紀錄數
 AS
 --省略內容
 GO
 | 
是否要改, 就看執行上是否有其他問題了, 目前沒改也可以執行.