导航

SQL 新建帐套存储过程

Posted on 2008-07-20 08:19  pegger  阅读(572)  评论(0编辑  收藏  举报
CREATE PROC dbo.HD_AddDatabase  /*新建套帐*/
@NewDatabaseNane Varchar(30),
@NewDatabasePath Nvarchar(500),
@BakDatabaseName nVarchar(20),
@BakDatabaseFileName nVarchar(20),
@BakDatabasePath nVarchar(500),
@CountingRoomName NVARCHAR(30),
@Number NVARCHAR(8),
@ServerName VARCHAR(30),
@DatabaseType VARCHAR(50),
@Data_Error int OUT,
@Data_ErrorName Nvarchar(30) OUT
AS
DECLARE @AnnalRows int
select @AnnalRows=count(*from  HDSystem_DataBases 
                  
where Number=@Number
if @AnnalRows>0 
begin
   
select @Data_ErrorName='套帐编码不能重复! ' 
   
goto Error_exit1
end 
select @AnnalRows=count(*from  HDSystem_DataBases 
                  
where CountingRoomName=@CountingRoomName
if @AnnalRows>0
begin
   
select @Data_ErrorName='套帐名不能重复! '
   
goto Error_exit1
end 
select @AnnalRows=count(*from  HDSystem_DataBases 
                  
where DataBasesName=@NewDatabaseNane
if @AnnalRows>0
begin
   
select @Data_ErrorName='数据库名不能重复! '
   
goto Error_exit1
end 
if len(@NewDatabasePath)=0 
begin
   
select @Data_ErrorName='数据库保存路径不能为空! '
   
goto Error_exit1
end 
if len(@BakDatabaseName)=0 
begin
   
select @Data_ErrorName='来源数据库不能为空! '
   
goto Error_exit1
end 
if len(@BakDatabaseFileName)=0
begin
   
select @Data_ErrorName='来源数据库文件不能为空! '
   
goto Error_exit1
end 
if len(@BakDatabasePath)=0 
begin
   
select @Data_ErrorName='来源数据库路径不能为空!'
   
goto Error_exit1
end 
if len(@ServerName)=0 
begin
   
select @Data_ErrorName='服务数据库名不能为空! '
   
goto Error_exit1
end
if len(@DatabaseType)=0 
begin
   
select @Data_ErrorName='数据库类型不能为空! '
   
goto Error_exit1
end
DECLARE @BakDatabaseNamePath Nvarchar(500)
DECLARE @BakDatabaseName_Data varchar(50)
DECLARE @BakDatabaseName_log varchar(50)
DECLARE @NewDatabaseName_mdf Nvarchar(500)
DECLARE @NewDatabaseName_ldf nvarchar(500)
select @BakDatabaseNamePath=@BakDatabasePath+'\'+ @BakDatabaseName+'.Bak'
select @BakDatabaseName_Data=@BakDatabaseFileName + '_data'
select @BakDatabaseName_log=@BakDatabaseFileName+ '_log'
select @NewDatabaseName_mdf=@NewDatabasePath+'\'+ @NewDatabaseNane+ '.mdf'
select @NewDatabaseName_ldf=@NewDatabasePath+'\'+ @NewDatabaseNane+ '.ldf'
/*SELECT @TranName = 'MyTransaction'*/
  
/*BEGIN TRANSACTION @TranName*/
INSERT INTO HDSystem_DataBases(DataBasesName,Number,CountingRoomName,
              NewDate,ServerName,DatabaseType)
       
VALUES(@NewDatabaseNane,@Number,@CountingRoomName,GETDATE(),
              
@ServerName,@DatabaseType)
 
IF @@Error<>0 
begin
   
select @Data_ErrorName='插入套帐信息失败! '
   
GOTO Error_exit
end    
RESTORE DATABASE @NewDatabaseNane
    
FROM DISK = @BakDatabaseNamePath
    
WITH MOVE @BakDatabaseName_Data TO  @NewDatabaseName_mdf,
        MOVE  
@BakDatabaseName_log TO @NewDatabaseName_ldf
/*COMMIT TRANSACTION MyTransaction*/
IF @@Error<>0 GOTO Error_exit
   
select @Data_Error=1
   
select @Data_ErrorName='套帐建立成功! '
   
return 
Error_exit:
  
/*Rollback Tran*/
  
delete HDSystem_DataBases where DataBasesName=@NewDatabaseNane
  
select @Data_Error=-1
  
select @Data_ErrorName='套帐建立失败! '
  
return 
Error_exit1:
  
select @Data_Error=-1
  
return

GO
河南恒友科贸有限公司 
电话 :0371-53733453    传真:0371-65388972
地址:郑州市郑花路8号 E-mail:hengyousoft@QQ.com