2009-11-24 1 views
1

그래서 나는 최근에이 문제와 비슷한 문제에 화를 냈습니다 : Oracle .NET error - Wrong number or type of arguments. 나는 오라클이 끔찍한 오류보고로 유명하다는 것을 알고 있습니다. 그러나 이것은 디버깅에 큰 고통입니다. 만약 당신이 10 개의 매개 변수를 가지고 있다면, 실제로 매개 변수의 수는 말할 것도없고 손으로 검사 할 수있는 것이 20 가지입니다 (유형과 이름). 그들이 실제로 합법적 인 가치라면."잘못된 번호 또는 전화의 인수 유형"오류를 디버깅하는 더 좋은 방법이 있습니까?

오라클에 대한 저장 프로 시저 호출에 대해 더 나은 진단을받을 수있는 방법이 있습니까?

답변

1

누락 된 매개 변수에 대한 과부하 및 DEFAULT 값이 도움이 될 수 있습니다. 다음과 비슷한 더미 프로 시저를 만듭니다.

procedure xxx (p_1 IN VARCHAR2 DEFAULT NULL, p_2 IN VARCHAR2 DEFAULT NULL....) 
begin 
    IF  p_1 IS NULL THEN RAISE_APPLICATION_ERROR(-20001,'P_1 is null); 
    ELSIF p_2 IS NULL THEN RAISE_APPLICATION_ERROR(-20001,'P_2 is null); 
... 
    END IF; 
end xxx; 

기본값은 .NET 호출을 비트 단위로 빌드 할 수 있음을 의미합니다. 오버로드는 올바른 데이터 유형 (예 : 날짜)을 강제하는 하나의 프로 시저와 모든 것이 VARCHAR2라고 가정 할 때 느린 1 개의 프로 시저를 가질 수 있음을 의미합니다. 호출이 "impl"변환을 사용하여 lax 프로 시저로 '폴백'하면 올바른 값이 전달되는지 여부를 확인하는 일부 디버그를 포함합니다. 대체 경로는 ALL_ARGUMENTS의 SELECT를 사용하여 스텁을 만드는 것입니다. 호출.

+0

두 가지 좋은 기술; 고맙습니다! –

관련 문제