高手们看过来,关于一条插入语句

wfwater 2003-09-29 02:19:05
我有一张数据表是程序代码创建的,它的字段是动态的,比如说第一次创建时有5个,第2次可能是6个。我需要在一个存储过程中将所有的字段全部插入0。
怎样写这个insert(未知个数的0)
...全文
22 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfwater 2003-09-29
  • 打赏
  • 举报
回复
哦,这个是表名。
wfwater 2003-09-29
  • 打赏
  • 举报
回复
大力
@表名 varchar(100)
这个参数定义在这个存储过程中是做什么的,它从哪里接受的值呢?
aierong 2003-09-29
  • 打赏
  • 举报
回复
honghaozi(红耗子)
说得对,你在创建表得时候应该给列一个默认数值0,为好

再说,你得表字段怎么老是变化,怎么回事,我感觉这样不太好
honghaozi 2003-09-29
  • 打赏
  • 举报
回复
不可能

但你可以在生成的时候把默认值设为0,insert的时候不写那些列的值

说实话,你的设计很怪异,不如说出来大家讨论
wfwater 2003-09-29
  • 打赏
  • 举报
回复
呵呵,谢谢各位高手指点。学习消化先。
aierong 2003-09-29
  • 打赏
  • 举报
回复
create table aq ( i int,ii int)
go
declare @n int,@mm varchar(100),@sql nvarchar(400)
select @n=count(*) from INFORMATION_SCHEMA.columns where table_name='aq'
select @mm=REPLICATE('0,',@n)
select @mm=left(@mm,len(@mm)-1)
select @sql='insert into aq select '+@mm
print @sql
exec sp_executesql @sql
go


给你一个例题
pengdali 2003-09-29
  • 打赏
  • 举报
回复
create proc 名
@表名 varchar(100)
as
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',0' from syscolumns where id=object_id(@表名)
set @sql='insert '+@表名+' values('+right(@sql,len(@sql)-1)+')'
exec(@sql)
pengdali 2003-09-29
  • 打赏
  • 举报
回复
create proc 名
@表名 varchar(100)
as
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',0' from syscolumns where id=object_id(@表名)
set @sql='insert '+@表名+' values('+right(@sql,len(@sql)-1)+')'
exec(@sql)
zjcxc 元老 2003-09-29
  • 打赏
  • 举报
回复
用动态的SQL语句:

declare @sql varchar(8000),@i int
select @sql='insert into 表名 values('
,@i=count(*)
from syscolumns where object_id('表名')=id

while @i>0
select @sql=@sql+'0,'
,@i=@i-1
set @sql=left(@sql,len(@sql)-1+')'

exec(@sql)
愉快的登山者 2003-09-29
  • 打赏
  • 举报
回复
declare @s varchar(8000), @b varchar(1000)
set @s = 'insert tablename ('
set @b = ''
select @s = @s + A.name + ',', @b = @b + '''0'',' from
syscolumns A left join sysobjects B
on A.id = B.id
where B.name = 'a1'
set @s = left(@s, len(@s) - 1) + ') values (' + left(@b, len(@b) - 1) + ')'
select @s
exec(@s)
sdhdy 2003-09-29
  • 打赏
  • 举报
回复
--字段的个数你肯定知道的吧
declare @sql varchar(8000)
declare @count int--字段的个数
set @count=1
set @sql='insert tablename values('
while @count<=8--假定字段个数为8
begin
set @sql=@sql+'0,'
set @count=@count+1
end
set @sql=left(@sql,len(@sql)-1)+')'
exec (@sql)

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧