2011-11-07 3 views
0

PHP-SQRSRV 드라이버를 사용하여 MSSQL 데이터베이스를 읽었습니다.sqlsrv_num_rows가 저장 프로 시저에서 작동하지 않습니다.

sqlsrv_num_rows를 사용할 때 커서를 올바르게 설정할 수 없으므로 결과가 0입니다. 이것은 저장 프로 시저의 경우에만 발생합니다. SQLSRV_CURSOR_STATIC & SQLSRV_CURSOR_KEYSET을 모두 사용했습니다. 아무도 일하지 않았다. 더 커서 .. Executing SQL directly; no cursor in PHP when calling a stored procedure

, 직접 실행 SQL하지만 설정 한 후 [sqlsrv_configure ("WarningsReturnAsErrors을", 0);] 해결 된 것을 :

처음에이 오류가 없어. 출력이 0이거나 -1입니다.

전체 레코드가 아닌 레코드 수만을 원합니다. 그리고 저장 프로 시저를 사용해야합니다.

이 문제를 해결할 수 있도록 도와주세요.

답변

1

저장 프로시 저는 implcit 행 수를 반환하지 않습니다.

행 수를 생성하고 절차에서 또는 추가 결과 집합으로 OUTPUT parameters 중 하나로 저장 프로 시저를 수정해야합니다.

어떻게 수행 할 것인가는 프로 시저의 성격과 개수에 따라 다릅니다.

<some SQL operation>  
SET @rowcount = @@ROWCOUNT 

당신이 경우 : 프로 시저 내에서 하나 이상의 SELECT, INSERT 또는 UPDATE 문에 의해 영향을 받고있다 행을 계산하는 경우, 당신은 OUTPUT 매개 변수의 값을 설정 @@ROWCOUNT 내부 매개 변수를 사용할 수 있습니다 단순히 테이블의 행 수를 계산하면 간단한 계산 쿼리의 결과를 매개 변수에 할당 할 수 있습니다.

SELECT @rowcount = COUNT(1) FROM <some table> 
+0

감사합니다. @Ed Harper ..이 솔루션을 살펴 보았습니다. 문제는 모든 저장된 Procs를 수정할 수 없다는 것입니다. 그들은 다른 파티에 의해 관리됩니다. 또한, 그들은 시스템의 다른 부분에서 사용되고 있습니다. 나를 위해 남아있는 유일한 방법은 PHP 배열의 모든 데이터를 가져 와서 그 길이를 계산하는 것입니다. 어쨌든, 도와 줘서 고마워. – navyajapani

관련 문제