2011-08-03 2 views
0

SQL 프로 시저 (SQL Server 2008)를 호출하는 .net 응용 프로그램이 있습니다. SP로 호출이 에러 메시지저장 프로 시저가 ASP를 실행하지 않습니다 .NEt

에 실패 "부질가 부질 아래와 때.이 허용되지 않은 1 개 이상의 값을 반환 =! = <, < =,>,> =하거나 하위 쿼리는 표현으로 사용됩니다. "

위와 같은 매개 변수를 사용하여 SQL Server 2008 클라이언트에서 SP를 수동으로 실행할 때 문제가 없습니다.

누구든지이 문제를 해결할 수 있습니까?

보안상의 이유로 여기에 내 SP를 게시 할 수 없습니다.

+2

답변을 원한다면 proc을 수정하고 여기에 게시하십시오. –

+1

**보고 ** ** 당신이하고있는 일, 도움을 줄 수있는 방법이 없습니다, 정말로 ...이 문제를 보여주는 최소한의 버전으로 저장된 proc 파일을 줄여보십시오. 여기에 게시하십시오 ... –

답변

0

저장 프로 시저가 값을 반환하고이 값을 가져 오려면 SET NOCOUNT ON을 프로 시저의 첫 번째 문자열에 사용해야합니다.

편집 : 죄송합니다. 질문을 이해하지 못했습니다. 대답이 잘못되었습니다.

+0

안녕하세요, 이미 SET NOCOUNT가 설정되어 있습니다. 예, SP의 반환 값을 캡처합니다. 다른 제안은 –

+0

코드를 볼 필요가 있다고 생각합니다 ... –

0

설명하는 문제가있는 소리는 here입니다.

저장 프로 시저에 의해 수정되는 테이블에 트리거가있을 수 있으며이 레코드는 수정되는 레코드 하나만을 예상하도록 코딩되어 있습니다.

은 아마 당신 같은 것을 가지고 : 당신의 업데이트가 더 이상의 레코드를 수정하는 경우

declare @XYZ int 
select @XYZ = FieldA from inserted 

을,이 문은 오류 메시지와 함께 실패합니다.

SP 자체가 환경 값을 확인하지 않는 한, ASP.NET에 비해 SSMS에서 실행이 실패하지 않는 이유는 없습니다. 현재 사용자가 suser_sname() 함수에서 가져온 값이므로 해당 값으로 인해 변경을 수행하지 않을 수 있으므로 트리거가 실행되지 않을 수 있습니다.

트리거가없는 경우 위의 샘플 쿼리에 대한 예제를 찾아 두 개 이상의 값을 반환 할 수 없다는 것을 다시 확인하십시오.

관련 문제