cfqueryparam с уникальным типом идентификатора в таблице
У меня есть запрос, где я пытаюсь вставить значения в таблицу, и одно из этих значений (ImportID) имеет тип uniqueidentifier в базе данных. Я заглянул в документацию Adobe CF и увидел, что и cf_sql_char, и cf_sql_idstamp должны работать для параметра cfquery для моего типа уникального идентификатора. Я также читал эту ветку, в которой говорится то же самое: что наиболее подходит Coldfusion cfsqltype для использования в типе поля уникального идентификатора MS SQL?
Я нашел несколько других мест, которые используют параметр "maxlength" для тега cfqueryparam и cf_sql_char в качестве типа, но не смогли заставить мой код работать. Я продолжаю получать сообщение об ошибке "Преобразование не удалось при преобразовании строки символов в uniqueidentifier". Я включаю свой код, где я генерирую UID и пытаюсь вставить ниже (я заменил некоторые имена переменных и вынул все другие столбцы для импорта):
<cfscript>
ImportID = createUUID();
</cfscript>
<cfquery name="INSERTTableName" datasource="#Application.Datasource#">
INSERT INTO TableNameImport(
ImportID
)
VALUES(
<cfqueryparam value="#variables.ImportID#" cfsqltype="CF_SQL_CHAR">
)
</cfquery>
Любая помощь будет принята с благодарностью. Заранее спасибо.
*********************************РЕДАКТИРОВАТЬ**************** ****************
Нашел ответ:
<cfquery name="INSERTTableName" datasource="#Application.Datasource#">
DECLARE @ImportID uniqueidentifier
SET @ImportID = NEWID()
INSERT INTO TableNameImport(
ImportID
)
VALUES(
@ImportID
)
</cfquery>
Проблема заключалась в том, что UUID, созданный из вызова coldfusion, отличается от формата, созданного в Microsoft SQL Server.
1 ответ
Ты прав. SQL использует GUID, а createUUID управляет UUID. Оба значения имеют значение 32hex, но используют другой текстовый формат (расположение тире). И использовать другой расчет для генерации случайного значения. Вы можете использовать UUID, если вы изменяете форматирование текста, чтобы иметь местоположение тире GUID или отправлять двоичное значение. Для приведенного выше примера, который работает, вы также можете вернуть GUID, если cf нужна ссылка на это значение.