2012-05-04 3 views
1

SYS_REFCUROR 유형의 OUT 매개 변수가있는 저장 프로 시저가 있습니다. 프로 시저를 실행하기 전에 C#에서 해당 OUT 매개 변수를 제외한 모든 매개 변수를 추가합니다. 그러나 프로 시저를 실행할 때 "잘못된 숫자 또는 인수 유형"오류가 발생합니다. 내 질문은 그 매개 변수에 어떤 값을 할당하지 않을 경우 왜 내 매개 변수 컬렉션에 추가해야합니까?C# - 매개 변수 컬렉션에 매개 변수를 추가해야합니까?

+0

답변 확인 ..... –

답변

1

저장 프로 시저 실행 후 sql의 out 매개 변수 값이 코드에서 제공 한 out 매개 변수에 저장되므로 추후 실행시 나중에 사용할 수 있으므로 매개 변수를 추가해야합니다.

매개 변수를 전달하지 않으려면 출력 매개 변수에 기본값을 할당하면 문제가 해결됩니다. 예를 들어

:

CREATE PROCEDURE MyTest 
    @Data1 int 
    ,@Data3 int = null output 

위와 같이 할 경우, 다음 코드로 출력 매개 변수를 전달 할 필요가 없습니다, 그리고 당신이 점점 오류를 숨 깁니다.

+0

Oracle의 OUT 및 IN OUT 매개 변수에 기본값을 추가 할 수 없습니다. SQL Server에 대해 잘 모릅니다. –

+0

@MikeJM - SQL 서버를 사용하면 Oracle을 할 수 있지만 oracle은 생각이 없습니다. 당신이 코드를 추가 할 필요가없는 것보다 코드가 없습니다. –

+0

잠시 기다려주십시오. 프로 시저에서 OUT 매개 변수에 값을 지정하지 않으면 어떻게됩니까? OUT 매개 변수가 SYS_REFCURSOR이므로이 경우 일 수 있습니다. 내 V_TYPE 매개 변수가 0이면 일부 SELECT 문에 대해서만 커서를 엽니 다. 그렇지 않으면 V_TYPE의 값에 따라 Insert, Update 또는 Delete를 수행하므로 해당 OUT 매개 변수에 값을 할당하지 않습니다. –