저장 프로 시저의 매개 변수 스니핑과 해결 방법에 대한 기사 (특히 여기에서)를 많이 읽었습니다. 예를 들면 다음과 같습니다. http://elegantcode.com/2008/05/17/sql-parameter-sniffing-and-what-to-do-about-it/매개 변수 스니핑 및 중첩 저장 프로 시저
다른 저장 프로 시저에서 호출하는 저장 프로 시저에도 동일하게 적용됩니까? 즉, 링크 된 기사에서 설명 된 솔루션은 중첩 저장 프로 시저에도 적용됩니다.
또한 호출 저장 프로 시저에서 @PersonID라는 변수를 선언하는 경우 호출 된 저장 프로 시저에서 @PersonID라는 변수를 decalre 할 수 있습니까? 예 : DECLARE PersonID int. 이것은 가변적 인 섀도 잉입니다.
감사합니다. 따라서 저장 프로 시저 1에서 PersonID = 1 및 저장 프로 시저 2에서 PersonID = 2를 선언하면 저장 프로 시저 2에서 저장 프로 시저 1로 제어가 다시 전달 된 후 PersonID가 1과 같음을 확인할 수 있습니까? 동일한 변수를 사용하는 위험이 있습니까? 이름? – w0051977
예, PersonID = 1은 proc 1에 남아 있습니다. proc 2의 내부는 효과가 없습니다. NET 또는 Java 메소드와 "캡슐화"를 생각해보십시오. 이해가된다면 위험하지 않습니다. 중첩 된 proc은 그 자체의 메소드이므로 별도로 호출 할 수도 있습니다 – gbn
고마워요. 이 질문에 답을 표시 할 준비가 거의 다되었습니다. 명시 적 트랜잭션과 함께 'XACT_ABORT ON'을 사용하여 저장 프로 시저에 오류가있을 때 트랜잭션이 롤백되도록합니다. 따라서 VB6 명령 개체 (이 저장 프로 시저를 호출하는)에 시간 초과가 있거나 저장 프로 시저가 예외를 throw하면; 프로그램은 그것을 처리 할 것이다. 나는 최근에 'XACT_ABORT ON'을 발견했습니다. VB6 프로그램에서 저장 프로 시저를 호출 할 때 고려해야 할 사항이 있습니까? – w0051977