专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Sql Server

动态表名的存储过程,该怎么解决

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
动态表名的存储过程
我建立一个存储过程,以下是我写的存储过程。这样写存储过程我每增加一个表,就必须在存储过程中添加一条记录,这样不利于维护。我想改进这个存储过程,建立一个动态表名的存储过程。数据库的表名都是以‘usb’开头的。



ALTER PROCEDURE [dbo].[SPN]
(
    @value VARCHAR(10)
)
 AS
begin
truncate table alldata
insert into Alldata select * FROM USB1st WHERE PN=@value
insert into Alldata select * FROM USB2nd WHERE PN=@value
insert into Alldata select * FROM USB3rd WHERE PN=@value
insert into Alldata select * FROM USB4th WHERE PN=@value
insert into Alldata select * FROM USB5th WHERE PN=@value
insert into Alldata select * FROM USB6th WHERE PN=@value
insert into Alldata select * FROM USB7th WHERE PN=@value
insert into Alldata select * FROM USB8th WHERE PN=@value
insert into Alldata select * FROM USB9th WHERE PN=@value
insert into Alldata select * FROM USB10th WHERE PN=@value
insert into Alldata select * FROM USB11th WHERE PN=@value
insert into Alldata select * FROM USB12th WHERE PN=@value
insert into Alldata select * FROM USB13th WHERE PN=@value
insert into Alldata select * FROM USB14th WHERE PN=@value
insert into Alldata select * FROM USB15th WHERE PN=@value
insert into Alldata select * FROM USB16th WHERE PN=@value
insert into Alldata select * FROM USB17th WHERE PN=@value
insert into Alldata select * FROM USB18th WHERE PN=@value
insert into Alldata select * FROM USB19th WHERE PN=@value
insert into Alldata select * FROM USB20th WHERE PN=@value
insert into Alldata select * FROM USB21st WHERE PN=@value
insert into Alldata select * FROM USB22nd WHERE PN=@value
insert into Alldata select * FROM USB23rd WHERE PN=@value
insert into Alldata select * FROM USB24th WHERE PN=@value
insert into Alldata select * FROM USB25th WHERE PN=@value
insert into Alldata select * FROM USB26th WHERE PN=@value
insert into Alldata select * FROM USB27th WHERE PN=@value
insert into Alldata select * FROM USB28th WHERE PN=@value
insert into Alldata select * FROM USB29th WHERE PN=@value
insert into Alldata select * FROM USB30th WHERE PN=@value
insert into Alldata select * FROM USB31th WHERE PN=@value
insert into Alldata select * FROM USB32th WHERE PN=@value
insert into Alldata select * FROM USB33th WHERE PN=@value
insert into Alldata select * FROM USB34th WHERE PN=@value
insert into Alldata select * FROM USB35th WHERE PN=@value
insert into Alldata select * FROM USB36th WHERE PN=@value
insert into Alldata select * FROM USB37th WHERE PN=@value
insert into Alldata select * FROM USBHDD WHERE PN=@value
insert into Alldata select * FROM USBList1 WHERE PN=@value
insert into Alldata select * FROM USBList2 WHERE PN=@value
insert into Alldata select * FROM USBList3 WHERE PN=@value
end
------解决思路----------------------

--要多加一对单引号...
declare @command1 nvarchar(4000)
set @command1='insert into Alldata select * FROM ? WHERE PN='''+rtrim(@value)+''''

exec sp_MSforeachtable @command1=@command1,
@whereand="and o.name like 'USB%'"

------解决思路----------------------
引用:
Quote: 引用:


--要多加一对单引号...
declare @command1 nvarchar(4000)
set @command1='insert into Alldata select * FROM ? WHERE PN='''+rtrim(@value)+''''

exec sp_MSforeachtable @command1=@command1,
@whereand="and o.name like 'USB%'"
  

非常感谢您的存储过程。我有一个小问题
我想把Where后面的( PN='''+rtrim(@value)+'''')替换成(Check_MD5=@value or Check_MD5='0x'+@value)修。应该如何修改。谢谢!


declare @command1 nvarchar(4000)
set @command1='insert into Alldata select * FROM ? WHERE Check_MD5='''+rtrim(@value)+''' or Check_MD5=''0x'+rtrim(@value)+''''
 
exec sp_MSforeachtable @command1=@command1,
@whereand="and o.name like 'USB%'"
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: