2010-06-08 5 views
0

SQL Server의 저장 프로 시저에서 데이터 정렬 오류가 발생했습니다.SPROC에서 COLLATION을 추가 할 위치

동등 작업에서 "Latin1_General_CS_AS"와 "SQL_Latin1_General_CP1_CI_AS"간의 데이터 정렬 충돌을 해결할 수 없습니다.

데이터베이스의 데이터 정렬 Latin1_General_CS_AS

오류가 라인에 삽입에서 발생합니다. COLLATE 문을 어디에 추가해야합니까?

CREATE TABLE #TempList 
(
    TNR varchar(10) 
) 

DECLARE @TNR varchar(10), @Pos int 

SET @subjectList = LTRIM(RTRIM(@subjectList))+ ',' 
SET @Pos = CHARINDEX(',', @subjectList, 1) 

IF REPLACE(@subjectList, ',', '') <> '' 
BEGIN 
    WHILE @Pos > 0 
    BEGIN 
     SET @TNR = LTRIM(RTRIM(LEFT(@subjectList, @Pos - 1))) 
     IF @TNR <> '' 
     BEGIN 
      INSERT INTO #TempList (TNR) VALUES (CAST(@TNR AS varchar(10))) --this is where it errors 
     END 
     SET @subjectList = RIGHT(@subjectList, LEN(@subjectList) - @Pos) 
     SET @Pos = CHARINDEX(',', @subjectList, 1) 

    END 
END 

답변

1

임시 테이블은 서버 데이터 정렬 인 tempdb 서버 데이터 정렬을 사용합니다.

COLLATE Database_Default를 사용하여 당신이 는 실제 DB 데이터 정렬의 정렬 강제 독립적를 만드는 "호스트"데이터베이스 데이터 정렬을 사용하도록 변경 @TNR에 대한

CREATE TABLE #TempList 
(
    TNR varchar(10) COLLATE Database_Default 
) 
... 

하지

(심지어 문자열 데이터 형식 불구하고) 이것은 분명히 DB (서버가 아닌)와 같은 데이터 정렬을 가지고 있기 때문에 오류가 발생합니다. 따라서

+0

! 그게 효과가! 고맙습니다! – Daria

+0

반갑습니다. upvote 및 accept ... (위쪽 화살표 및 틱)을 자유롭게 사용하십시오 – gbn

+0

임시 테이블을 사용하지 않을 때 데이터 정렬을 설정하는 방법은 무엇입니까? – Sharique

관련 문제