之前有人遇到过这个吗?
我在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(执行存储过程的地方)。
答案 0 :(得分:1)
对于处于相同情况的任何人......它是由SQL中的NULL_CONCAT_NULL(或其他)选项引起的。这一个标志可以使存储过程运行一点点取决于你如何使用concat等。解决这个问题的一个好方法是通过ISNULL围绕你的很多项目,这似乎摆脱了获得不同结果的问题
如果您不想修复您的sprocs,还有另一个选项是检查sql正在经历的路径(TCP / IP等)。我注意到在审核时,根据sql运行的端口,某些设置会有很大不同。