2008-09-23 3 views
1

내 저장 프로 시저가 SQL Server 2005의 SQL instegartion 패키지에서 아래와 같이 호출됩니다.저장 프로 시저 구문

EXEC? = Validation.PopulateFaultsFileDetails? , 0

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

+0

"EXEC? = Validation.PopulateFaultsFileDetails?, 0"은 어디에서 얻었습니까? SQL 프로파일 러 또는 다른 곳에서? – TcKs

+0

SQL Server Integration Package (.sln) 프로젝트 파일에서 'Execute SQL Task'상자에서 가져 왔습니다. – test

답변

1

이 SQL 문을 호출하면 물음표 (?)가 모두 대체됩니다. 첫 번째 변수는 저장 프로 시저의 반환 값을받을 변수로 바뀝니다. 두 번째 값은 저장 프로 시저로 전달되는 값으로 대체됩니다.

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 주입 취약점이 감소해야합니다.
1

? 변수, 정확히 말하면 매개 변수를 의미합니다. 첫번째 ? 저장 프로 시저의 반환 값이고 두 번째 매개 변수는 저장 프로 시저의 첫 번째 매개 변수입니다.

0

감사합니다. 답을 고맙게 생각합니다.

내가 성공적으로 DECLARE를 사용하여 저장 프로 시저를 실행 할 수 있었다 @FaultsFileName의 VARCHAR DECLARE @FaultsFileID의 INT EXEC @FaultsFileID = Validation.PopulateFaultsFileDetails 'SameMonth TEST.TXT가' SELECT가

을 @FaultsFileID @FaultsFileID 그러나 통합 패키지에서 'SameMonth Test.txt'라는 입력 매개 변수를 전달하면 다음과 같은 오류가 발생합니다.

매개 변수 이름은 서수 형식과 명명 된 형식을 혼합해서 사용할 수 없습니다. "가능한 실패 이유 : 쿼리 관련 문제 , "ResultSet"속성이 올바르게 설정되지 않았습니다. 매개 변수가 올바르게 설정되지 않았거나 연결이 올바르게 설정되지 않았습니다.