Coldfusion 表中具有uniqueidentifier类型的cfqueryparam

Coldfusion 表中具有uniqueidentifier类型的cfqueryparam,coldfusion,uniqueidentifier,cfquery,cfqueryparam,Coldfusion,Uniqueidentifier,Cfquery,Cfqueryparam,我有一个查询,试图在表中插入值,其中一个值(ImportID)在数据库中是uniqueidentifier类型。我查看了adobe CF文档,发现CF_sql_char和CF_sql_idstamp都适用于我的uniqueidentifier类型的cfquery参数。我也读过这篇文章,上面说的是同样的事情: 我发现其他一些地方使用cfqueryparam标记的“maxlength”参数和cf_sql_char作为类型,但无法使我的代码正常工作。我一直收到“从字符串转换为uniqueidentif

我有一个查询,试图在表中插入值,其中一个值(ImportID)在数据库中是uniqueidentifier类型。我查看了adobe CF文档,发现CF_sql_char和CF_sql_idstamp都适用于我的uniqueidentifier类型的cfquery参数。我也读过这篇文章,上面说的是同样的事情:

我发现其他一些地方使用cfqueryparam标记的“maxlength”参数和cf_sql_char作为类型,但无法使我的代码正常工作。我一直收到“从字符串转换为uniqueidentifier时转换失败”的错误消息。我正在将生成UID的代码包括在内,并尝试在下面插入(我替换了一些变量名,并删除了导入的所有其他列):


ImportID=createUUID();
插入到TableNameImport中(
进口
)
价值观(
)
任何帮助都将不胜感激。提前谢谢

*********************************编辑********************************

找到了答案:

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

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

声明@ImportID uniqueidentifier
SET@ImportID=NEWID()
插入到TableNameImport中(
进口
)
价值观(
@进口
)

问题在于,从coldfusion调用创建的UUID的格式与在Microsoft SQL Server中创建的UUID的格式不同。

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

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

是的,我确实将GUID返回给coldfusion,因为我后来为该插入选择了记录。谢谢你的回复!是的,我确实将GUID返回给coldfusion,因为我后来为该插入选择了记录。谢谢你的回应!