我编写了以下过程:
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
进行比较?
答案 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,它应该可以工作。