【发布时间】:2019-08-26 19:53:06
【问题描述】:
我想在 SQL Server 的 Exec 调用中动态插入值。
DECLARE @TableName NVARCHAR(MAX) = 'tblTestInsert'
DECLARE @SQLString NVARCHAR(MAX)
DECLARE @Id UNIQUEIDENTIFIER = '3781EF06-6EE4-41ED-81C5-9AE7AD4C4356'
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @tableName)
BEGIN
SET @SQLString = 'INSERT INTO ' + @tableName + '(Id, FirstName, LastName, Description) VALUES ('+ CAST(@Id AS UNIQUEIDENTIFIER) + ',"visual","studio","visual studio 2017")';
EXEC sp_executesql @SQLString
END
ELSE
BEGIN
PRINT 'Table is not exists';
END
但它会引发以下错误:
数据类型 nvarchar(max) 和 uniqueidentifier 在加法运算符中不兼容。
请帮助解决这个问题。提前致谢!
【问题讨论】:
-
可能你打算使用
CAST(@Id AS NVARCHAR(MAX))。 -
@AlwaysLearning 在使用 CAST(@Id AS NVARCHAR(MAX)) 后抛出类似“F06”附近的语法错误之类的错误
-
@debugger 确保用单引号将文字值括起来。
-
@EzLo 我尝试查询(基于您的查询),例如 SET SQLString = 'INSERT INTO ' + tableName + ' (Id,FirstName,LastName,Description)VALUES(CONVERT(UNIQUEIDENTIFIER,' + CONVERT(VARCHAR(100), Id) + '),"visual","studio","visual studio 2017")';错误抛出'F06'附近的语法不正确。
-
@EzLo 和 AlwaysLearning 感谢您的帮助。
标签: sql-server sql-server-2016