用SQL向以变量定义列名的表中插入数据时,怎么取得列名

代码有点长,截图上传了... 代码有点长,截图上传了 展开
 我来答
frogley
2012-03-24 · TA获得超过1854个赞
知道小有建树答主
回答量:1008
采纳率:50%
帮助的人:1079万
展开全部
很简单,所有列名都不写就行了。
insert into #xsmx1
select customer,month1_quantity,month2_quantity,month3_quantity,
avg_quantity,wait_quantity from #xsmx

如果非要写列名,用拼接sql的方法吧,
exec('insert into #xsmx1 (客户名称,['+@month1+'],['+@month2+'],本月已发,月平均用量,本月待发量) select customer,month1_quantity,month2_quantity,month3_quantity,
avg_quantity,wait_quantity from #xsmx')
追问
所有列名都不写 insert into #xsmx1
提示 列名或所提供值的数目与表定义不匹配
用拼接SQL能成功插入
那我要查询这几列的话,该怎么输入SELECT语句
select ?,? from #xsmx1
追答
也用拼接啊
exec('select ['+@month1+'],['+@month2+']from #xsmx1')
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
木森耙耙
2015-11-22 · TA获得超过436个赞
知道小有建树答主
回答量:907
采纳率:0%
帮助的人:574万
展开全部

这种情况下你需要使用动态SQL了。

create table t(id int)
go
declare @colname varchar(20) = 'id'
declare @colvalue varchar(20) = '1'
exec ('insert into t('+@colname+') values('+@colvalue+')')
go
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2cc3c16
2015-11-10 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:106万
展开全部
用系统表可以查询,
查询语句如下:
Select name from syscolumns Where ID=OBJECT_ID('表名')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjg1108
2012-03-24
知道答主
回答量:29
采纳率:0%
帮助的人:4.7万
展开全部
将第二个字段和第三个字段用中括号[]括起来就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式