【发布时间】:2019-01-22 08:51:02
【问题描述】:
我写了如下程序:
ALTER PROCEDURE [dbo].[GetLocationOfGuidPre]
@GuidArgument UNIQUEIDENTIFIER
.
.
.
SET @SQL_String = 'INSERT INTO #Guids(FoundGuid) SELECT ' + @ColName + ' FROM ' + @TableSchema + '.' + @TableName + ' WHERE ' + @ColName + ' = ' + @GuidArgument;
当我尝试执行它时,我得到了这个错误:
数据类型 nvarchar 和 uniqueidentifier 在加法运算符中不兼容。
如何将字符串值与UNIQUEIDENTIFIER 进行比较?
【问题讨论】:
-
您需要使用 guid 文字 docs.microsoft.com/en-us/dotnet/framework/data/adonet/ef/…(上一节中的示例)。
-
当您将动态 SQL 拼凑在一起时,将应用有关 SQL 注入的必要警告。即使所有输入都经过审查,也要注意标识符(如列名和表名)应使用
QUOTENAME进行转义,以防止您的代码因异常但合法的名称而中断。
标签: sql sql-server database sql-server-2012 dynamic-sql