2012-05-29 65 views
0

之前有人跑過這個嗎?PHP中的MSSQL_query比SQL Native Sproc返回不同的結果

我在SQL存儲過程具有以下參數:

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

而下面的MSSQL查詢在PHP運行完全相同的查詢。

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個運行結果...

當PHP通過SQL運行,我得到2個結果...

是否有任何運行時間設定(設置NoCOUNT)必須​​在SQL存儲過程中設置以確保結果輸出的準確性?或者是否存在會影響日期驅動存儲過程的結果的傳遞日期參數的已知問題?

Microsoft-IIS/5.0/PHP/5.2.5/SQL Server 2008 R2(執行存儲過程的位置)。

回答

1

對於任何人在這種情況下......它是由SQL中的NULL_CONCAT_NULL(或其他)選項引起的。這個標誌可以使存儲過程的運行方式有點不同,具體取決於你如何使用concat等。解決這個問題的一個好方法是通過圍繞你的很多項目的ISNULL,它似乎擺脫了獲得不同結果的問題。

另一個選項,如果你不想修復你的sprocs是檢查SQL正在經歷的路徑(TCP/IP等)。在注意審計時,我注意到某些設置根據SQL運行的端口而異。