SCOPE_IDENTITY()를 선택하면 정수가 아닌 소수가 반환되는 이유는 무엇입니까?
그래서 저는 ID 열을 기본 키로 하는 테이블을 가지고 있습니다. 그래서 그것은 정수입니다.그럼, 왜?SCOPE_IDENTITY()항상 C# 응용 프로그램에 int 대신 10진수 값을 반환합니까?10진수 값이 C#의 정수로 암시적으로 변환되지 않기 때문에 이것은 정말 짜증납니다. 즉, Postgres가 동등한 함수에 대해 정수를 반환하는 SQL Server와 Postgres를 사용하기 때문에 이제 많은 내용을 다시 써야 하고 많은 도우미 메서드를 사용해야 합니다.
왜 그럴까요?SCOPE_IDENTITY()단순한 정수를 반환하는 것이 아닙니다.기본 키에 십진수/비식별 값을 일반적으로 사용하는 사람이 있습니까?
SQL Server에서IDENTITY속성을 할당할 수 있습니다.tinyint,smallint,int,bigint,decimal(p, 0)또는numeric(p, 0)열그러므로.SCOPE_IDENTITY함수는 위의 모든 것을 포함할 수 있는 데이터 형식을 반환해야 합니다.
앞의 답변이 말했듯이, 그냥 던져주세요.int반환하기 전에 서버에서 ADO를 선택합니다.NET은 예상대로 유형을 탐지합니다.
쿼리 또는 저장된 proc에서 반환하기 전에 캐스트할 수 없습니까(SP는 항상 int를 반환하지만 출력 매개 변수를 사용하고 있을 수도 있습니다.
맘에 들다SELECT CAST(SCOPE_IDENTITY() AS INT) AS LAST_IDENTITY
왜 이런 일이 일어나는 거지?아마도 더 유연하고 더 많은 수를 처리하기 위해서일 것입니다.
범위 ID 반환 값이 10진수(38,0)입니다.
CAST, OUTPUT 절을 사용하거나 다음 대신 출력 매개 변수에 할당합니다.SELECT SCOPE_IDENTITY()고객에게
이것을 사용해 보면 정수를 돌려받을 수 있습니다.
ExecuteScalar('insert...; select CONVERT(int,scope_identity())');
질문에 대한 정확한 답변은 아니지만, 위의 답변과 같은 맥락에서 (T-SQL - MS SQL Server)는 어떻습니까?
convert 선택(bigint, SCOPE_IDENTITY()
언급URL : https://stackoverflow.com/questions/2601620/why-does-select-scope-identity-return-a-decimal-instead-of-an-integer
'programing' 카테고리의 다른 글
| Windows에서 파일의 대/소문자를 변경하시겠습니까? (0) | 2023.05.09 |
|---|---|
| 텍스트 상자의 텍스트 끝에 커서 설정 (0) | 2023.05.04 |
| Python - 두 문자열 간의 차이 (0) | 2023.05.04 |
| 이클립스에서 새 작업영역 만들기 (0) | 2023.05.04 |
| 설치된 Eclipse가 32비트 버전인지 64비트 버전인지 확인하는 방법은 무엇입니까? (0) | 2023.05.04 |