문제

저장된 절차는 SQL Server 2005의 SQL InsteGartion 패키지에서 아래와 같이 호출됩니다.

exec? = validation.populateFaultsFileDetails? , 0

나는 무엇을 확실하지 않지만? 수단

도움이 되었습니까?

해결책

이 SQL 문장이 호출되면 두 물음표 (?)가 모두 교체됩니다. 첫 번째는 저장 프로 시저의 반환 값을받는 변수로 대체됩니다. 두 번째는 저장 절차로 전달되는 값으로 대체됩니다. 이 진술을 사용하는 코드는 다음과 같은 것으로 보입니다 (pseudocode).

dim result
SQL = "EXEC ? = Validation.PopulateFaultsFileDetails ? , 0"
SQL.execute(result, 99)    // pass in 99 to the stored proc
debug.print result

이것은 당신에게 3 가지 장점을 제공합니다.

  1. 다른 값으로 동일한 비트의 SQL을 재사용 할 수 있습니다.
  2. 반환 값을 선택하고 성공/오류를 테스트 할 수 있습니다.
  3. 통과하는 값이 문자열 인 경우 앱에서 SQL 주입 취약점의 위험을 줄여야합니다.

다른 팁

? 정밀하게 매개 변수를 나타냅니다. 첫번째 ? 저장된 PRCoedure의 반환 값이고 두 번째는 저장 프로 시저의 첫 번째 매개 변수입니다.

감사합니다. 대답에 감사드립니다.

@faultsfilename varchar deplare @faultsfileid int int @faultsfileid = validation.populatefaultsfiledetails 'samemonth test.txt', @faultsfileid select @faultsfileid

그러나 입력 매개 변수를 통합 패키지에서 'samemonth test.txt'로 전달하면 다음과 같은 오류가 발생합니다.

매개 변수 이름은 서수와 명명 된 유형의 혼합이 될 수 없습니다. ". 가능한 실패 이유 : 쿼리의 문제,"resultSet "속성이 올바르게 설정되지 않거나 매개 변수가 올바르게 설정되지 않거나 올바르게 설정되지 않았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top