0

以前有人遇到过这个吗?

我在 SQL 中有一个带有以下参数的存储过程:

    exec PaySummary 'DemoTest', 'DemoTest-Mohn-00038', '5/14/12', '5/27/12', 'manager', 'DemoTest-Boyd-00005'

并且 PHP 中的以下 MSSQL 查询运行完全相同的查询。

private function dataTest(){
    $strSQL = 'exec PaySummary \'DemoTest\', \'DemoTest-Mohn-00038\', \'5/14/12\', \'5/27/12\', \'manager\', \'DemoTest-Boyd-00005\'';
    $a = mssql_query($strSQL);

    echo $strSQL;

    while($row=mssql_fetch_array($a)){
        var_dump($row);     


    }

}

在 SQL 中运行此查询时,我将得到 3 个结果...

当通过 SQL 在 PHP 中运行时,我得到 2 个结果...

是否必须在 SQL 存储过程上设置任何运行时设置(设置 NoCOUNT)以确保结果输出的准确性?或者传递日期参数是否存在会影响日期驱动存储过程的结果的已知问题?

Microsoft-IIS/5.0 / PHP/5.2.5 / SQL Server 2008 R2(执行存储过程的地方)。

4

1 回答 1

1

对于处于同样情况的任何人......这是由 SQL 中的 NULL_CONCAT_NULL (或其他)选项引起的。这个标志可以使存储过程的运行方式略有不同,具体取决于您使用 concat 等的方式。解决此问题的一个好方法是通过围绕您的许多项目的 ISNULL,这似乎摆脱了获得不同结果的问题.

如果您不想修复存储过程,另一个选择是检查 sql 正在通过的路径(TCP/IP 等)。在观看审计时,我注意到某些设置因 sql 运行的端口而异。

于 2012-06-03T18:44:46.947 回答