在表中具有唯一标识符类型的 cfqueryparam



我有一个查询,我试图将值插入到表中,其中一个值(ImportID)在数据库中属于唯一标识符类型。我查看了Adobe CF文档,发现cf_sql_char和cf_sql_idstamp都应该适用于我的唯一标识符类型的cfquery参数。我还读了这个线程,它说了同样的事情:用于MS SQL的唯一标识符字段类型最合适的Coldfusion cfsqltype是什么?

我发现其他一些地方使用 "maxlength" 参数作为 cfqueryparam 标签并cf_sql_char作为类型,但无法使我的代码工作。我不断收到类似"从字符串转换为唯一标识符时转换失败"的错误。我正在包含我的代码,我在其中生成 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与Microsoft SQL Server中创建的格式不同。

你是对的。 SQL 使用 GUID,createUUID man man a UUID。 两者都是 32 十六进制值,但使用不同的文本格式(破折号的位置)。 并使用不同的计算来生成随机值。 如果将文本格式更改为具有 GUID 短划线位置或发送二进制值,则可以使用 UUID。 对于上面有效的示例,如果 cf 需要对该值的引用,您可能还希望返回 GUID。

相关内容

  • 没有找到相关文章

最新更新