2012-07-02 2 views
1

У меня есть запрос, в котором я пытаюсь вставить значения в таблицу, и одно из этих значений (ImportID) имеет тип uniqueidentifier в базе данных. Я просмотрел документацию по Adobe adobe и увидел, что оба cf_sql_char и cf_sql_idstamp должны работать для параметра cfquery для моего типа uniqueidentifier. Я также прочитал эту тему, которая говорит то же самое: What is the most appropriate Coldfusion cfsqltype to use for MS SQL's uniqueidentifier field type?cfqueryparam с уникальным типом идентификатора в таблице

Я нашел несколько других мест, которые используют параметр «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> 

Любая помощь будет высоко ценится , Заранее спасибо.

********************************* EDIT ************ ********************

Найдено ответ:

<cfquery name="INSERTTableName" datasource="#Application.Datasource#"> 
    DECLARE @ImportID uniqueidentifier 
    SET @ImportID = NEWID() 

    INSERT INTO TableNameImport(
     ImportID 
    ) 
    VALUES(
     @ImportID 
    ) 
</cfquery> 

проблема заключалась в том, что UUID создан из вызова ColdFusion является другой формат от созданного в Microsoft SQL Server.

ответ

0

Вы верны. SQL использует GUID, а createUUID создает UUID. Оба значения 32hex, но используют текстовый формат different (местоположение тире). И использовать другой расчет для генерации случайного значения. Вы можете использовать UUID, если вы измените форматирование текста, чтобы иметь места в тире GUID или отправить двоичное значение. Для вашего примера выше, что работает, вам также может понадобиться вернуть GUID, если cf нуждается в ссылке на это значение.

+0

Да, я вернул GUID обратно в coldfusion, когда я выбирал записи для этой вставки позже по линии. Спасибо за ответ! –