2014-10-06 4 views
2

저장 프로 시저를 실행하는 동안 Exec [usp_SummaryReport] 77,1, '[Name]', '2014-10-06 11 : 45 : 21.170', '2014- 10-06 11 : 45 : 21.170 ', 나는이 오류
근처의 구문이 잘못을 얻고있다 [이름] '- ' SQL에서 '-'근처의 구문이 올바르지 않음

여러분 모두 감사드립니다. 나는 그것을 바로 잡았다. 가치 전달과 관련한 문제입니다.

+1

''[Name] ''이 옳지 않은 것 같습니다 ... –

+4

게시 된'exec' 문에 아무런 문제가 없습니다. 나는'usp_SummaryReport'의 정의에서 어딘가에서 에러가 발생했다는 것을 말할 것입니다. 전달 된 값이 어떤 종류의'sp_executesql' 호출에서 사용될 가능성이 높기 때문입니다. – md4

+0

예 - 검색어 내에 있습니다. 현재 날짜의 문제는 문자열로 처리되고 구문 분석됩니다. –

답변

0

귀하의 절차는 그것의 일부를 연결하여 SQL을 동적으로 작성합니다.

프로 시저를 만들 때 구문 검사를했기 때문에 구문 오류가 발생하지 않았 으면이 유형의 구문 오류가 발생하지 않습니다. 남아있는 유일한 가능성은 프로 시저가 일부 SQL 자체를 작성하고 실행하려고하는 것입니다.

동적으로 작성된이 SQL은 사용자에게이 오류를 제공합니다. 실제 코드를 보지 않고서도 왜이 SQL이 당신에게이 오류를주는 지 말할 수는 없습니다.


대부분의 경우는 대신 매개 변수를 사용하는 SQL에 직접 날짜를 연결하는 시도하여 SQL 주입하는 경향이 있지만, 우리는이 증거가 없다.

1

위와 같이 제안 된 것처럼 sqlscript를 동적으로 생성 한 다음?를 실행하십시오. 그렇다면 스크립트를 실행하기 전에이 코드를 추가하면됩니다.

...... statement 
    print @query 
    EXEC sp_executesql @query 
.... 

SSMS에서는 메시지 창에서 정확한 쿼리를 얻을 수 있습니다. 당신은 복사하여 새로운 쿼리 창에서 과거 수정하고 마지막으로 주요 SP의 SQL 스크립트에서 바꿀 수 있습니다.

관련 문제