저장 프로 시저 구문
-
02-07-2019 - |
문제
저장된 절차는 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 가지 장점을 제공합니다.
- 다른 값으로 동일한 비트의 SQL을 재사용 할 수 있습니다.
- 반환 값을 선택하고 성공/오류를 테스트 할 수 있습니다.
- 통과하는 값이 문자열 인 경우 앱에서 SQL 주입 취약점의 위험을 줄여야합니다.
다른 팁
? 정밀하게 매개 변수를 나타냅니다. 첫번째 ? 저장된 PRCoedure의 반환 값이고 두 번째는 저장 프로 시저의 첫 번째 매개 변수입니다.
감사합니다. 대답에 감사드립니다.
@faultsfilename varchar deplare @faultsfileid int int @faultsfileid = validation.populatefaultsfiledetails 'samemonth test.txt', @faultsfileid select @faultsfileid
그러나 입력 매개 변수를 통합 패키지에서 'samemonth test.txt'로 전달하면 다음과 같은 오류가 발생합니다.
매개 변수 이름은 서수와 명명 된 유형의 혼합이 될 수 없습니다. ". 가능한 실패 이유 : 쿼리의 문제,"resultSet "속성이 올바르게 설정되지 않거나 매개 변수가 올바르게 설정되지 않거나 올바르게 설정되지 않았습니다.