无法将字符串与 UNIQUEIDENTIFIER 进行比较

问题描述 投票:0回答:2

以下动态 SQL 片段将条件中的

string
UNIQUEIDENTIFIER
进行比较。

ALTER PROCEDURE [dbo].[GetLocationOfGuidPre] 
    @GuidArgument UNIQUEIDENTIFIER
    /* Script continues... */
    SET @SQL_String = 'INSERT INTO #Guids(FoundGuid) SELECT ' + @ColName + ' FROM ' + @TableSchema + '.' + @TableName + ' WHERE ' + @ColName + ' = ' + @GuidArgument;

执行此脚本会引发错误:

The data types nvarchar and uniqueidentifier are incompatible in the add operator.

如何比较

string
UNIQUEIDENTIFIER

sql sql-server sql-server-2012 dynamic-sql
2个回答
3
投票

您是否尝试过将其作为参数传递?

SET @SQL_String = 'INSERT INTO #Guids(FoundGuid) SELECT ' + @ColName + ' FROM ' + @TableSchema + '.' + @TableName + ' WHERE ' + @ColName + ' = @GuidArgument';

EXEC sp_executesql @SQL_string,
                   N'@GuidArgument UNIQUEIDENTIFIER',
                   @GuidArgument = @GuidArgument;

0
投票

我想这个错误的原因很清楚:它说

+ ' = ' + @GuidArgument;
不起作用,因为你尝试向 varchar 添加唯一的 ID...只需尝试将你的
@GuidArgument
转换为 varchar ,它应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.