如何从TVP和本地变量向数据表插入数据
问题描述
我有一个输入表值参数(TVP):
@_inputTvp TableType Readonly
还有一个本地变量:
declare @_localVar varchar
我知道如何单独将TVP或变量值插入数据表,但现在需要同时从这两个数据源向A_Table插入数据,请问是否可以按如下方式编写语句?
insert into A_Table values (@localVar, select col1, col2, col3 from @inputTvp)
解答
你写的语句存在语法错误,不能在VALUES子句中嵌套SELECT查询。正确的做法是使用INSERT...SELECT语法,将本地变量与TVP的查询结果结合:
insert into A_Table select @_localVar, col1, col2, col3 from @_inputTvp
这个语句的逻辑是:对@_inputTvp中的每一行数据,都附加@_localVar的值,一起插入到A_Table中。另外建议给@_localVar指定明确的长度(例如varchar(50)),避免因默认长度导致的字符串截断问题。
内容的提问来源于stack exchange,提问作者Haze
相关产品推荐
相关产品推荐

