2013-03-27 2 views
1
Declare @STAF_TO NVARCHAR(100) 

내가 가지고는 SQL Server 저장 프로 시저의 일부로 쿼리 다음 @ID 140 (유형 INT 같다는 것을오류 '문자열이나 이진 데이터는 잘립니다'

SELECT @SF_TO = TP.FRST_NAME + ' ' + TP.MDLE_NAME + ' ' + TP.LAST_NAME 
FROM tbl_Sf TS 
INNER JOIN tbl_Pl TP ON (TS.POPL_PK = TP.POPL_PK) 
WHERE TS.SF_PK = @ID 

내가 아는) 바로 앞에 삽입 한 print 문을 기반으로합니다. 이 쿼리를 별도로 실행하려고하면 잘 작동합니다. 그러나

, 나는 다음과 같은 오류가 저장 프로 시저의 일부로 실행하려고 다음 SELECT 문 위의 쿼리입니다

Msg 8152, Level 16, State 13, Procedure Proc_Name, Line 57
String or binary data would be truncated.

선 (57)는 것을. 누구나 이런 일이 일어날 수있는 아이디어가 있습니까?

편집 : NVARCHAR(100)NVARCHAR(200)NVARCHAR(MAX)으로 변경하려고했지만 오류가 계속 발생했습니다. 또한 별도로 실행할 경우 쿼리를 잘 (100 자) 작동합니다.

FRST_NAME 
MDLE_NAME 
LAST_NAME 

이상 98 자 (공백에 대한 +2)까지 추가

+5

'@ SF_TO'선언을 표시 할 수 있습니까? 이 변수는 잘릴 가능성이 큰 변수입니다. –

+3

또한'FRST_NAME','MDLE_NAME'과'LAST_NAME'의 정의는 무엇입니까? 나는 또한 모음을 항상 놓치지 않는 키보드로 바꾸는 것이 좋습니다. 어떤 아이디어가'FIRST_NAME'보다'FRST_NAME'을 입력하는 것이 얼마나 힘들지 *? 당신은 인물을 구했으나 당신은 회색 머리카락을 얻었습니다. –

+0

@ Love2Learn이 @ @ SF_TO에 대한 선언문을 추가했습니다. –

답변

7

당신의 열 정의가 거의 확실하다.

@SF_TONVARCHAR(100)보다 큰 것으로 선언하는 것이 좋습니다 (단, 정확하게는 모르겠습니다.).

오류 메시지는 문제를 해결하는 데 성가심을줍니다. 더 자세한 내용이 산출물에 포함되면 좋을 것입니다. Please vote/comment on this Connect item.

TP.FRST_NAME + ' ' + TP.MDLE_NAME + ' ' + TP.LAST_NAME 

100 자보다 큰 :의 연결이 때문에

+3

+1, 투표했습니다. 그 오류 메시지는 우습다! –

1

당신이 오류가 나타나는 것입니다. 이제 모든 단일 행에 적용되는 것은 아니지만 선택하는 행에 적용됩니다. 이 select 문을 실행 한 경우 :

SELECT TP.FRST_NAME + ' ' + TP.MDLE_NAME + ' ' + TP.LAST_NAME 
FROM tbl_Sf TS 
INNER JOIN tbl_Pl TP ON (TS.POPL_PK = TP.POPL_PK) 
WHERE LEN(TP.FRST_NAME + ' ' + TP.MDLE_NAME + ' ' + TP.LAST_NAME) > 100 

잘못된 행을 찾을 수 있습니다. 또 다른 방법은 단순히 @STAF_TO 변수를 3 열의 길이가 +2 인 길이와 동일하게 만드는 것입니다. 따라서 열의 정의가 모두 50 인 경우 @STAF_TO152이어야합니다.

+0

그 쿼리는 아무 것도 반환하지 않았습니다 ... –

+0

@ArtF, 그 쿼리가 아무것도 반환하지 않으면 우리가 보지 못하는이 프로 시저에 더 많은 것이 있습니다. 오류가 발생하지 않습니다. 또는이 절차에있는 정확한 쿼리가 아닙니다. 나는 무엇을 모르지만 뭔가가 빠져 있습니다. 아마도 전체 절차를 게시 할 수 있습니까? –

2

연결 명령문은 @SF_TO의 선언 된 길이보다 긴 레코드를 거의 확실하게 생성합니다. @SF_To의 길이를 늘려야합니다.

관련 문제