将字符串与UNIQUEIDENTIFIER比较?

时间:2018-08-15 13:07:39

标签: sql sql-server database sql-server-2012 dynamic-sql

我编写了以下过程:

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

当我尝试执行它时,出现此错误:

  

nvarchar和uniqueidentifier数据类型在add运算符中不兼容。

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:-1)

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