关于Ms SQL SERVER的一个小问题,有兴趣的朋友请进来看看(50分)

  • 主题发起人 主题发起人 zjj_001
  • 开始时间 开始时间
Z

zjj_001

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了个存储过程,如下所示:
CREATE PROCEDURE RestoreDatabase(@DatabaseName varchar(30),@AbsolutPath varchar(120) )AS
declare @DataFile varchar(30),@LogFile varchar(30),@DataPath varchar(120),@LogPath varchar(120)
begin
Restore database @DatabaseName from disk=@AbsolutPath with replace
if @@error <>0
begin
select @DataFile=name,@DataPath=filename from sysfiles where fileid=1
select @LogFile=name,@LogPath=filename from sysfiles where fileid=2
end
用来处理在程序中恢复某个SQL实例的所有数据库,但在这个存储过程里,在恢复之前,我
想得到该数据库中sysfiles表中的某些数据,于是需在sysfiles 表名中加前缀,比如上述语
句将改成:
select @DataFile=name,@DataPath=filename from @DatabaseName..sysfiles where fileid=1
但以上语句当然不能通过,我的意思是能不能有这种实现方式,因为每个数据库均有这个表:
sysfiles ,能不能在前面加个数据库名,而这数据库名是需要动态改变的
请各位高手Ci教
 
select @dpname=depart from depart where departname=@lrmc
set @dpname='hy'+@dpname
if (@dpname='') break
set @runs='if exists(select id from '+@dpname+'.dbo.urights where username='+''''+@ry2+''''+')'+
' update '+@dpname+'.dbo.urights set username='+''''+@ry+''''+ 'where username='+''''+@ry2+''''+'
else

insert into '+@dpname+'.dbo.urights (username,rights) VALUES('+''''+@ry+''','+''''+''''+')'
print @runs
exec(@runs)
 
当然可以参照一下如下语句:
Select * from 数据库名。DBO。表名
动态的生成语句,替换“数据库名”即可!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部