以下动态 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
?
您是否尝试过将其作为参数传递?
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;
不起作用,因为你尝试向 varchar 添加唯一的 ID...只需尝试将你的 @GuidArgument
转换为 varchar ,它应该可以工作。