Почему действительно выбирает SCOPE_IDENTITY (), возвращают десятичное число вместо целого числа?

Таким образом, у меня есть таблица со столбцом идентификационных данных как первичный ключ, таким образом, это - целое число. Так, почему делает SCOPE_IDENTITY() всегда возвращайте десятичное значение вместо интервала к моему приложению C#? Это является действительно раздражающим, так как десятичные значения неявно не преобразуют в целые числа в C#, что означает, что я теперь должен переписать набор материала и иметь много вспомогательных методов, потому что я использую SQL Server и Пост-ГРЭС, который Пост-ГРЭС действительно возвращает целое число для эквивалентной функции..

Почему делает SCOPE_IDENTITY() не только возвращают простое целое число? Есть ли люди там, которые обычно используют значения decimal/non-identity для первичных ключей?

83
задан Earlz 8 April 2010 в 16:20
поделиться

4 ответа

В SQL Server свойство IDENTITY может быть присвоено tinyint, smallint, int, bigint, decimal(p, 0) или numeric(p, 0) столбцам. Поэтому функция SCOPE_IDENTITY должна возвращать тип данных, который может охватывать все вышеперечисленное.

Как было сказано в предыдущих ответах, просто приведите его к int на сервере перед возвратом, тогда ADO.NET определит его тип, как вы ожидаете.

98
ответ дан 24 November 2019 в 08:53
поделиться

Идентификатор области возвращаемое значение является десятичным (38,0)

CAST it, используйте предложение OUTPUT или назначьте его выходному параметру. чем SELECT SCOPE_IDENTITY () для клиента

4
ответ дан 24 November 2019 в 08:53
поделиться

попробуйте использовать это, и вы получите целое число:

ExecuteScalar('insert...; select CONVERT(int,scope_identity())');
3
ответ дан 24 November 2019 в 08:53
поделиться

Разве вы не можете просто привести его перед возвратом из запроса или хранимой процедуры (SP все равно всегда возвращают int, но, возможно, вы используете выходной параметр)?

Например SELECT CAST(SCOPE_IDENTITY() AS INT) AS LAST_IDENTITY

И почему он это делает? Наверное, чтобы быть более гибким и обрабатывать большие числа.

31
ответ дан 24 November 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: