如何通过存储过程给Sql SERVER 7表命名?(100分)

  • 主题发起人 主题发起人 gzhn
  • 开始时间 开始时间
G

gzhn

Unregistered / Unconfirmed
GUEST, unregistred user!
问题的提出:
为了给SQL server 7 某库所属的表在年初时备份并清空,想通过创建一个
存储过程来实现自动备份。关键在如何给该表命名问题上。在给该表命名时,
想利用当年的年份值给表命名,但SQL SERVER 的存储过程不允许用变量给表
命名。该想法是否寻得通?请教各位高人指点,100分呈上。
该存储过程的语句如下(已证实通不过):
CREATE PROCEDURE [dt_htzkback] /*备份并清空总库*/
AS
begin
declare @backmc varchar(8)
set @backmc='htzk'+str(year(getdate()),4,0)
print @backmc
select * into @backmc from htzk /*该句出错在给表的命名上,不用能变量*/
select * from htzk
end
 
改车参数来传递行吗?
CREATE PROCEDURE [dt_htzkback] /*备份并清空总库*/
@backmc varchar(8)
AS
begin
print @backmc
select * into @backmc from htzk /*该句出错在给表的命名上,不用能变量*/
select * from htzk
end
 
用动态sql来写喽

declare @backmc varchar(8)
declare @strSQL varchar(200)
set @backmc='htzk'+str(year(getdate()),4,0)
print @backmc
set @strSQL = 'select * into ' + @backmc + ' from htzk' /* 先写成一个sql字符串*/
exec(@strSQL) /* 然后执行就是了*/
 
楼上的说得对。这样的问题你可以查已经回答的。很多了。
另外注意 db_option 'dbname','select into/bulkcopy','true'
 
谢谢各位网友的热情帮助,本人通过努力已自行及时解决。
SQL server 有一个系统存储过程:sp_rename,使用它可以给已备份的表改名。
 
后退
顶部