【求助】如何对返回的结果做操作?
时间:2011-11-05
来源:互联网
select * from sysobjects where id in (select id from syscolumns where name= 'approvedate')
这样我会得到很多表名如何将这些表依次执行下面的删除操作?
SQL code
declare @k datetime declare @j datetime set @k='2009-04-20 10:10:11.000' set @j='2009-04-23 19:53:11.000' delete FROM RegisterReport WHERE approveDate BETWEEN @k AND @j;
作者: guojimail 发布时间: 2011-11-05
作者: NBDBA 发布时间: 2011-11-05
declare @sql nvarchar(max) declare @k datetime declare @j datetime set @k='2009-04-20 10:10:11.000' set @j='2009-04-23 19:53:11.000' select @sql=isnull(@sql,'')+' delete FROM '+name +' WHERE approveDate BETWEEN '''+convert(varchar,@k,120)+''' AND '''+convert(varchar,@j,120) +''';' from sysobjects where id in (select id from syscolumns where name= 'approvedate') exec(@sql)
作者: qianjin036a 发布时间: 2011-11-05
那个,报了个错误。
消息 4405,级别 16,状态 1,第 1 行
视图或函数 'V_RisReport' 不可更新,因为修改会影响多个基表。
SQL code
declare @sql nvarchar(max)
declare @k datetime
declare @j datetime
set @k='2009-04-20 10:10:11.000'
set @j='2009-04-23 19:53:11.000'
select @sql=isnull(@sql,'')+' delete FROM '+name +'……
作者: guojimail 发布时间: 2011-11-05
作者: roy_88 发布时间: 2011-11-05
declare @k datetime declare @j datetime set @k='2009-04-20 10:10:11.000' set @j='2009-04-23 19:53:11.000' --delete FROM RegisterReport --WHERE approveDate --BETWEEN @k AND @j; --生成语句直接执行 select ' delete '+name+' where approvedate between '''+CONVERT(varchar(23),@k,120)+''' and '''+CONVERT(varchar(23),@k,120)+''' ;' from sysobjects as a,syscolumns as b where a.id=b.id and b.name='approvedate' --或用变量传参一次执行 declare @s nvarchar(max) select @s=@s+' delete '+name+' where approvedate between '''+CONVERT(varchar(23),@k,120)+''' and '''+CONVERT(varchar(23),@k,120)+''' ;' from sysobjects as a,syscolumns as b where a.id=b.id and b.name='approvedate' exec(@s)
在生成语句可以看到生成的格式,下面变量,只是把生成的语句用一变量传参,再执行
作者: roy_88 发布时间: 2011-11-05
SQL code
declare @k datetime declare @j datetime set @k='2009-04-20 10:10:11.000' set @j='2009-04-23 19:53:11.000' --delete FROM RegisterReport --WHERE approveDate --BETWEEN @k AND @j; --生成语句直接执行 select ' delete 'a.+name+' where approvedate between '''+CONVERT(varchar(23),@k,120)+''' and '''+CONVERT(varchar(23),@k,120)+''' ;' from sysobjects as a,syscolumns as b where a.id=b.id and b.name='approvedate' --或用变量传参一次执行 declare @s nvarchar(max) select @s=@s+' delete '+a.name+' where approvedate between '''+CONVERT(varchar(23),@k,120)+''' and '''+CONVERT(varchar(23),@k,120)+''' ;' from sysobjects as a,syscolumns as b where a.id=b.id and b.name='approvedate' exec(@s)
当然调用系统存储过程的方法
SQL code
sp_msforeachtable 'if exists(select 1 from syscolumns where id=object_id(''?'') and objectproperty(object_id(''?''),''IsTable'')=1 and Name=''approvedate'') delete a from ? as a where approvedate between ''2009-04-20 10:10:11'' and ''2009-04-23 19:53:11'''
作者: roy_88 发布时间: 2011-11-05
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28