2012-05-29 3 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에서 동일한 쿼리를 실행. SQL을 통해 PHP에서 실행하면 나는이 개 결과를 얻을 수

내가 3 개 결과를 얻을이 쿼리에 대한 SQL 실행
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 저장 프로 시저에 설정해야하는 NoCOUNT를 설정 하시겠습니까? 또는 날짜 기반 저장 프로 시저의 결과에 영향을주는 날짜 매개 변수를 전달하는 것과 관련된 알려진 문제점이 있습니까?

Microsoft-IIS/5.0/PHP/5.2.5/SQL Server 2008 R2 (저장 프로 시저가 실행되는 위치).

답변

1

같은 상황에있는 사람은 ... 이것은 SQL의 NULL_CONCAT_NULL (또는 기타) 옵션으로 인해 발생합니다. 이 플래그를 사용하면 concat 등을 사용하는 방법에 따라 스토어드 프로 시저를 조금씩 다르게 실행할 수 있습니다.이 문제를 해결하는 좋은 방법은 다른 결과를 얻는 문제를 없애는 많은 항목 주변에 ISNULL을 사용하는 것입니다 .

또 다른 옵션은 sprocs를 수정하지 않으려는 경우 sql이 통과하는 경로 (TCP/IP 등)를 확인하는 것입니다. 일부 설정은 SQL이 실행중인 포트에 따라 크게 다르다는 감사를 볼 때 나타났습니다.

관련 문제