2009-10-16 4 views
3

cmd.ExecuteScalar() 또는 cmd.ExecuteNonQuery()를 실행하면 명령 개체의 Output 및 InputOutput 매개 변수가 저장 프로 시저의 변경 내용에서 업데이트됩니다. 그러나 cmd.ExecuteReader()에서도 마찬가지입니다. 이것은 SQL Server와 MySql 연결 모두에서 발생합니다. 이 동작은 의도적입니까?ExecuteReader() 후 출력 매개 변수가 업데이트되지 않습니다.

+0

샘플 코드를 제공해 주시겠습니까? – Restuta

답변

8

안녕하세요? 도움이 될 것입니다. clicky...

특정 상황에서는 문제가 될 수 있습니다.

+1

대답은 거기에 있었다. 판독기를 읽으려면 끝까지 읽거나 매개 변수가 업데이트되도록 닫아야합니다. 나는 독자가 끝난 후에 매개 변수에 대한 나의 평가를 옮겼다. 감사. –

0

출력 매개 변수를 통해 값을 검색 할 수 있어야합니다. 이 MS 지원 기사를보고 귀하의 문제가 언급 된 문제인지 확인하십시오. link text

또한 무엇을 반환하려고합니까? 단지 하나의 값이라면 ExecuteReader() 대신 ExecuteScalar()를 사용하는 것이 좋습니다.

1

출력 매개 변수는 레코드 세트의 끝까지 읽은 후에 만 ​​사용할 수 있습니다. 이 절차의 예를 들어

은 : 당신은 두 레코드를 읽은 후

alter procedure db.TestProc(@p int output) 
as 
select 1 
select 1 
set @par = 1 

데이터베이스은 @par 설정합니다. 데이터베이스는 첫 번째 읽기를 완료하기 전에 두 번째 SELECT를 실행하지 않습니다. 요청할 때 스트리밍 결과입니다.

관련 문제