1

모든 언어로 데이터를 저장해야하는 데이터베이스가 있는데 데이터베이스가 데이터 정렬에 의존 할 수 없기 때문에 어떤 로캘인지 알려주는 열이 있습니다. 쿼리에서 런타임에 데이터 정렬함수 인수로 데이터 정렬

또한 데이터 액세스에 EF을 사용하고 싶습니다. EF를 사용하면 런타임에 데이터 정렬을 지정할 수 없습니다. 인수로 데이터 정렬을 사용하는 SQL 함수를 만들고이 함수를 Linq 쿼리에 모두 적용하는 방법에 대해 생각하고 있습니다.

그러나 이것은

실패
CREATE FUNCTION fn_Compare 
( 
    @TextValue nvarchar(max), 
    @Culture varchar(10) 
) 
RETURNS nvarchar(max) 
AS 
BEGIN 
    RETURN @TextValue COLLATE @Culture 
END 
GO 
이 작업을 수행 할 수있는 경우

사람이 알고 있지 ?

+0

언어마다 고유 한 스키마를 하나만 만들면 어떻게 될까요? –

+0

그것은 많은 중복 테이블이 될 것입니다! –

답변

1

이 작업을 수행 할 수 없습니다. 함수가 반환하는 데이터 정렬은 모든 반환 값에서 일관성이 있어야합니다. 예를 들어, 다음은 오류를 생성합니다.

create function testfn (@test varchar(100), @i int) 
returns varchar(100) 
as 
begin 
    return(case when @i = 0 then @test collate SQL_Latin1_General_CP1_CS_AS 
       else @test collate SQL_Latin1_General_CP1_CI_AS 
     end) 
end; 

오류는 데이터 정렬 충돌로 인한 것입니다. 양자 택일로, 당신이 원하는 조합으로 새 작업 데이터베이스를 생성,

alter database collate <whatever> 

또는 :

은 당신이 할 수있는 것은 사용하는 것입니다.

관련 문제