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 つの結果が得られます...

PHPでSQLを実行すると、2つの結果が得られます...

結果の出力の精度を確保するために、SQL ストアド プロシージャで設定する必要があるランタイム設定 (NoCOUNT をオンに設定) はありますか? または、日付駆動型ストアド プロシージャの結果に影響を与える日付パラメーターの受け渡しに関する既知の問題はありますか?

Microsoft-IIS/5.0 / PHP/5.2.5 / SQL Server 2008 R2 (ストアド プロシージャが実行される場所)。

4

1 に答える 1

1

この同じ状況の誰にとっても... SQLの NULL_CONCAT_NULL (またはその他) オプションが原因です。この 1 つのフラグは、concat などの使用方法に応じて、ストアド プロシージャの実行を少し異なるものにすることができます。この問題を解決する良い方法は、さまざまな結果が得られるという問題を取り除くように見える多くのアイテムの周りに ISNULL を使用することです。 .

sprocs を修正したくない場合のさらに別のオプションは、SQL が通過するパス (TCP/IP など) を確認することです。監査を見ていると、SQL が実行されているポートによって一部の設定が大きく異なることに気付きました。

于 2012-06-03T18:44:46.947 に答える