将字符串与 UNIQUEIDENTIFIER 进行比较?

Comparing string with an UNIQUEIDENTIFIER?

我写了如下程序:

ALTER PROCEDURE [dbo].[GetLocationOfGuidPre] 
    @GuidArgument UNIQUEIDENTIFIER
    .
    .
    .
    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.

如何将字符串值与 UNIQUEIDENTIFIER 进行比较?

你试过把它作为参数传递吗?

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;

我想这个错误的原因很清楚:它说 + ' = ' + @GuidArgument; 不起作用,因为您尝试将唯一 ID 添加到 varchar...只需尝试转换您的 @GuidArgumentas varchar,它应该可以工作。