2009-07-03 1 views
0

stored procedure에서 행을 가져 오는 TableAdapter가 있습니다. 어떤 이유로 든 결과가 없으면 TableAdapter는 NULL 대신 값이 0 인 INT를 반환합니다. 저장 프로 시저에는 NOCOUNT ON이 있습니다.TableAdapter가 ASP.NET에서 팬텀 결과를 반환합니다.

이 문제는 EmptyDataTemplate이있는 프론트 엔드에 ListView가 표시된다는 것입니다. 쿼리 분석기에서 쿼리를 실행하면 NULL 대신 0이 반환됩니다.

저장 프로 시저에는 하나의 INT 매개 변수 (출력 없음)가있는 간단한 'SELECT * FROM WHERE'가 있습니다. 쿼리 분석기에서 실행하면 예상대로 출력이 없습니다.

무슨 일 이니?

답변

1

저장 프로 시저가 결과를 반환하는 것처럼 보입니다. 모든 저장 프로시 저는 결과 코드를 반환합니다. 가장 가능성이 높습니다.

+0

사실, 이것이 사실이 아니라고 확인했습니다. 쿼리 분석기에서 쿼리를 실행해도 결과가 반환되지 않으며 마찬가지로 데이터 집합 디자이너에서 결과가없는 다른 SP를 실행해도이 팬텀 결과가 발생하지 않았습니다. –

+0

SQL Server Management Studio에서 저장 프로 시저를 실행하고 새 창으로 실행을 선택하면 @rc가 다시 표시됩니다. sproc가 실행 중이고 변경하지 않으면 항상 0입니다. 그것은 우연 일 수 있습니다. –

+0

네, 맞아요. 그러나 이것이 사실이라면 결과가 없을 때 모든 SP가 데이터 집합 디자이너에서 0을 반환합니까? 이것은 일어나지 않는 것 같습니다. 그리고 정말 실망 스럽습니다. ListView는 결과가 없다는 것을 인식하지 못합니다. 무슨 일이 일어날 지에 대한 생각은 없습니까? –

1

쿼리에 대해 tableAdapter의 ExcuteMode 속성을 확인하십시오. "리더"로 설정되어 있는지 확인하십시오. ExecuteMode 3 개 가지 옵션이 있습니다 : - 데이터

  • 스칼라의 행을 반환 -

    1. 리더는 단일 값을
    2. NonQuery을 반환 -

    는 또한 매개 변수를 확인 영향을받는 행의 수와 int를 반환 반환 값 매개 변수에 대한 컬렉션입니다. AllowDBNull (null을 허용하면 true), Direction (ReturnValue)는 적절한 속성을 가져야합니다. 이 매개 변수는 SP의 결과를 보유해야합니다. 귀하의 예제에서 반환 된 레코드가 없으므로 null이됩니다.