Почему ColdFusion меняет мои значения, когда я использую <cfqueryparam>? - PullRequest
1 голос
/ 21 ноября 2011

Я использую ColdFusion 9.0.1 и SQL Server 2005.

Столбец в моей базе данных называется «Очки». Он настроен как числовой (6,1).

Когда я пишу запрос в SQL Server Management Studio для добавления значений, таких как 1.2 или 5.5, числа сохраняются правильно. Когда я падаю в 1,23, он округляется до 1,2. Когда я опускаюсь до 5,55, он округляется до 5,6. Это именно то, что я ожидаю.

UPDATE TableName
SET Points = 1.2

Когда я передаю свои значения в CFC и НЕ использую CFQUERYPARAM, я получаю точные результаты, как описано выше.

Когда я передаю свои значения в CFC с использованием CFQUERYPARAM, я не получаю то, что ожидаю. Когда я добавляю число вроде 1,2 или 5,5, значение округляется до 1,0 или 6,0.

UPDATE TableName
SET Points = <cfqueryparam type="CF_SQL_DECIMAL" value="#Points#">

Я изменил CFSQLTYPE на CF_SQL_NUMERIC и CF_SQL_DECIMAL. Тем не менее, я не могу получить числа для правильного сохранения.

Когда я запускаю запрос ниже в моем CFC, число сохраняется как 1.0.

UPDATE TableName
SET Points = <cfqueryparam type="CF_SQL_DECIMAL" value="1.23">

Можете ли вы помочь мне понять, почему это не так, как я ожидаю?

Ответы [ 2 ]

9 голосов
/ 21 ноября 2011

Вам необходимо добавить атрибут scale в ваш cfqueryparam, чтобы он знал, сколько десятичных разрядов нужно отправить. Добавьте scale="2", и все будет хорошо.

0 голосов
/ 21 ноября 2011

Я понял это. Это все о масштабе. Мне нужно добавить атрибут масштаба к моему CFQUERYPARAM, когда я использую CF_SQL_NUMERIC и CF_SQL_DECIMAL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...