OK SQL 전문가 또는 DBA가 아니므로이 모든 것을 함께 수행하는 것이 더 좋은 방법이라면, 자유롭게 의견을 말하십시오.Begin and End 문을 사용하여 동적 TSQL 쿼리를 작성하는 방법
그러나 특별히 필요한 작업은 dyanmic SQL을 사용하여 중복 값을 삽입하지 않는 기존의 저장 프로 시저를 향상시키는 것입니다. 단일 테이블에 specefic 때 자체 SQL은 케이크 한 조각입니다. 지금 당장은 여러 테이블에서 일반적으로 작동하는 TSQL을 사용하는 일반 저장 프로 시저에 문제가 있습니다. 문제는 BEGIN 및 END 문과 관련되어 있습니다.
SET @Query = 'IF NOT EXISTS (SELECT ' + @DescriptionFieldName + '
FROM '+ @TableName +'
WHERE (' + @DescriptionFieldName + ' = ''' + @DescriptionValue + ''')
BEGIN
INSERT INTO '+ @TableName +' (' + @DescriptionFieldName + ', LastUser, LastUpdate) VALUES ('''+ ISNULL(@DescriptionValue, '') +''', '''+ ISNULL(@LastUser, '') +''',Convert(Varchar, GetDate())) ' + 'SELECT CAST(scope_identity() AS int);
END'
EXEC (@Query)
나는 PRINT에 EXEC를 변경
이 모든 확인 구문 현명 할을 표시하지만, EXEC 사용할 때 다음과 같은 오류를 제공합니다 : 키워드 근처"잘못된 구문을 'BEGIN' . "
누구든지이 문제를 해결하여 쿼리가 작동하는 방법에 대한 아이디어가 있습니까?
감사합니다.
결국 좋은 시작은 BEGIN과 END와 관련이 없다. 또한 varchar이므로 WHERE ('+ @DescriptionFieldName +'= ''+ @DescriptionValue + ''))) @DescriptionValue (미래의 독자를 위해 수정 된 원본 게시물) 주위에 (3) 틱 표시를 추가해야했습니다. 그 (3) 틱 방법이 최선의 방법인가요? – atconway