您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将sql_variant转换为提供为varchar的data_type

将sql_variant转换为提供为varchar的data_type

是的,您可以将sql_variants参数作为传递给sp_executesql,但是您需要使用“转换为”类型继续沿动态sql路由进行下去,并使用为所使用的列确定的类型名称CAST

以这个为例:

CREATE TABLE Foo
(
    ID INT
);
declare @type NVARCHAR(20) = N'INT'; -- Substitute your Type here.
declare @tableName NVARCHAR(50) = 'Foo';
declare @value sql_variant;
set @value = 1234;
DECLARE @sql AS NVARCHAR(MAX) = N'INSERT INTO [dbo].'+ @tableName +
           N' VALUES(CAST(@value AS ' + @type + '))';
EXECUTE sp_executesql @sql, N'@value sql_variant', @value = @value;

不用说,您将需要确保您的@tableNameType数据需要针对白名单运行,以便使用这种动态sql来防止sql Injection漏洞。

SqlFiddle在这里

SQLServer 2022/1/1 18:31:10 有397人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶