SQL Server搭建模拟环境进行测试

接触数据库早期写的东西,初学者可以看看。 一、接口部分 
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO
IF   NOT   EXISTS  ( SELECT   *   FROM  dbo.sysobjects  WHERE  id  =   OBJECT_ID (N ' [dbo].[PrMatch_Construct] ' AND   OBJECTPROPERTY (id,N ' IsProcedure ' =   1 )
BEGIN
EXEC  dbo.sp_executesql  @statement   =  N ' -- =============================================
-- Author:        <whbo>
-- Create date: <061222>
-- Description:    <模拟大赛测试环境>
-- =============================================
create proc [dbo].[PrMatch_Construct]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as 
set nocount on 
begin
declare @sql varchar(1024)
while (@i<=@intMax)
    begin
    set @sql = 
'' create table  '' +@strTabName+cast(@i as varchar)+ '' (UserID int,Amount int) ''
    exec(@sql)
    if (@@Error<>0) print @i
    set @i = @i + 1
    end
end
'  
END
GO
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO
IF   NOT   EXISTS  ( SELECT   *   FROM  dbo.sysobjects  WHERE  id  =   OBJECT_ID (N ' [dbo].[PrMatch_AddRecord] ' AND   OBJECTPROPERTY (id,N ' IsProcedure ' =   1 )
BEGIN
EXEC  dbo.sp_executesql  @statement   =  N '
-- =============================================
-- Author:        <whbo>
-- Create date: <061222>
-- Description:    <模拟大赛添加测试数据>
-- =============================================
CREATE proc [dbo].[PrMatch_AddRecord]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as 
set nocount on 
begin
declare @sql varchar(1024)
while (@i<=@intMax)
    begin
    set @sql = 
'' insert into  '' +@strTabName+cast(@i as varchar) +
                
'' (UserID ,Amount) '' +
                
''  select 100,1  '' + '' union select 101,2  '' + '' union select 101,3 ''
    exec(@sql)
    if (@@Error<>0) print @i
    set @i = @i + 1
    end
end
'  
END
GO
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO
IF   NOT   EXISTS  ( SELECT   *   FROM  dbo.sysobjects  WHERE  id  =   OBJECT_ID (N ' [dbo].[PrMatch_CheckEnvironment] ' AND   OBJECTPROPERTY (id,N ' IsProcedure ' =   1 )
BEGIN
EXEC  dbo.sp_executesql  @statement   =  N '
-- =============================================
-- Author:        <whbo>
-- Create date: <061222>
-- Description:    <模拟大赛检查环境>
-- =============================================
CREATE proc [dbo].[PrMatch_CheckEnvironment]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
--@strErrMsg varchar(120) output
as 
set nocount on 
begin
declare @sql varchar(1024)
while (@i<=@intMax)
    begin
    set @sql =
'' if not exists(select 1 from sysobjects where name =  '''''' +
            @strTabName+cast(@i as varchar)+
            
'''''' ) print  '''' 错误: '' +@strTabName+
            cast(@i as varchar)+
'' 缺少 ''''''
    exec(@sql)
    set @i = @i + 1
    end
end
'  
END
GO
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO
IF   NOT   EXISTS  ( SELECT   *   FROM  dbo.sysobjects  WHERE  id  =   OBJECT_ID (N ' [dbo].[PrMatch_DropEnvironment] ' AND   OBJECTPROPERTY (id,N ' IsProcedure ' =   1 )
BEGIN
EXEC  dbo.sp_executesql  @statement   =  N ' -- =============================================
-- Author:        <whbo>
-- Create date: <061222>
-- Description:    <模拟大赛测试环境删除>
-- =============================================
create proc [dbo].[PrMatch_DropEnvironment]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as 
set nocount on 
begin
declare @sql varchar(1024)
while (@i <=@intMax)
    begin
    set @sql = 
'' drop table  '' +@strTabName+cast(@i as varchar)
    exec(@sql)
    set @i = @i+1
    end
end
'  
END
GO
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO
IF   NOT   EXISTS  ( SELECT   *   FROM  dbo.sysobjects  WHERE  id  =   OBJECT_ID (N ' [dbo].[PrMatch_UpdateRecord] ' AND   OBJECTPROPERTY (id,N ' IsProcedure ' =   1 )
BEGIN
EXEC  dbo.sp_executesql  @statement   =  N '
-- =============================================
-- Author:        <whbo>
-- Create date: <061222>
-- Description:    <模拟大赛更新数据>
-- =============================================
CREATE proc [dbo].[PrMatch_UpdateRecord]
@dtmBgnDate datetime --大赛开始日期
as 
set nocount on 
begin
--update userlist
if @dtmBgnDate is null
begin print 
'' 请输入大赛开始日期! ''  return end
if not exists(select 1 from sysobjects where name = 
'' UserList '' )
begin print 
'' TABLE :UserList Not Exists! ''  return end
if not exists(select 1 from sysobjects where name = 
'' UserLogin '' )
begin print 
'' TABLE :UserLogin Not Exists! ''  return end

update userlist set now_money=100000, --当前帐户余额
                    dyn_money=100000, --昨日帐户市值
                    fdyn_money=100000, --周一帐户市值
                    cnum=0,           --平仓次数
                    volume=0,         --成交量
                    smax_surplus=0    --单笔获利最高
if (@@Error=0) print 
'' TABLE : UserList Updated! Counts :  '' +cast(@@RowCount as varchar)
--update userlogin
update userlogin set initTime=@dtmBgnDate
if (@@Error=0) print 
'' TABLE : UserLogin Updated! Counts :  '' +cast(@@RowCount as varchar)
end
'  
END
GO
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO
IF   NOT   EXISTS  ( SELECT   *   FROM  dbo.sysobjects  WHERE  id  =   OBJECT_ID (N ' [dbo].[PrMatch_DelRecord] ' AND   OBJECTPROPERTY (id,N ' IsProcedure ' =   1 )
BEGIN
EXEC  dbo.sp_executesql  @statement   =  N '

-- =============================================
-- Author:        <whbo>
-- Create date: <061222>
-- Description:    <模拟大赛删除测试数据>
-- =============================================
CREATE proc [dbo].[PrMatch_DelRecord]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as 
set nocount on 
begin
declare @sql varchar(1024)
while (@i <=@intMax)
    begin
    set @sql = 
'' delete from  '' +@strTabName+cast(@i as varchar)
    exec(@sql)
    if (@@Error<>0) print @i
    set @i = @i + 1
    end
--Limit_History,Limit
if exists(select 1 from sysobjects where name =
'' limit '' )
    delete from Limit
if exists(select 1 from sysobjects where name =
'' limit_history '' )
    begin
    delete from Limit_History
    --Restore Limit_History`s identity seed to 0
    DBCC CHECKIDENT(Limit_History,reseed,0)
    end
end

'  
END
二、调用方式 
use  xupan
-- 构造测试环境
--
exec PrMatch_Construct 'no_close',0,99
--
添加测试数据
--
exec PrMatch_AddRecord 'no_close',0,99
--
检测环境
exec  PrMatch_CheckEnvironment  ' no_close ' , 0 , 99
exec  PrMatch_CheckEnvironment  ' closed ' , 0 , 99
-- 数据删除
exec  PrMatch_DelRecord  ' no_close ' , 0 , 99
exec  PrMatch_DelRecord  ' closed ' , 0 , 99
-- 数据更新
declare   @dtmBgnDate   smalldatetime   -- 大赛开始时间
set   @dtmBgnDate = Getdate ()
exec  PrMatch_UpdateRecord  @dtmBgnDate
-- 删除测试环境
--
exec PrMatch_DropEnvironment 'no_close',0,99

三、处理名称相关表的方法(a
-- 取得closed0到closed99满足条件的数据
declare   @sql   varchar ( 8000
declare   @i   int , @strTabName   varchar ( 32 )
set   @i = 0
set   @sql = ''
while  ( @i <= 99 )
    
begin
    
set   @strTabName = ' Closed ' + cast ( @i   as   varchar )
    
select   @sql = @sql + ' select * from  ' + @strTabName + '  where ctime<= '' 2007-02-01 9:00:00 ''' + '  union ' + char ( 10 ) + char ( 13 )
    
set   @i = @i + 1
    
end

select   @sql = left ( @sql , len ( @sql ) - 7 )
-- print @sql
exec ( @sql )
(b)
sp_msforeachtable  @command1 = ' print  '' ? ''' ,
@command2 = ' select * from ? where ctime> '' 2007-02-01 9:00:00 ''' ,
@whereand = '  and name like  '' closed% ''   '
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值