SQL存储过程+视图

---存储过程举例

IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'***'))

    DROP PROCEDURE ***
 GO
create procedure ***(@tablename as nvarchar(256),@ret int output)          
as          
 declare @sSql as  nvarchar(4000)         
        
 set @sSql = N'select top 1 * from ' + @tablename       
 exec(@sSql)        
 if @@rowcount = 0        
 begin        
   set @ret=2        
   return        
 end    
   
 select convert(int,0) as id,convert(money,0) as ufts,convert(money,0) as corufts into #arr where 1=0  
 set @sSql=N'insert into #arr select arr.**,convert(money,arr.crm_timestamp) as ufts ,arrs.corufts           
   from  (select a.***,t.ufts as corufts from           
    '+@tablename+' t left join *** a with (updlock) on a.***=t.autoid group by a.***,t.ufts ) arrs          
    left join *** arr with (updlock)           
    on arr.***=arrs.*** '  
 exec(@sSql)  
 if exists(select top 1 id  from #arr where (ufts<>corufts or id is null) and  corufts is not null )          
 begin           
  set @ret=1  --         
  return          
 end  
   
   
 set @sSql=N'select top 1 a.partapply_d_id from            
    '+@tablename+' t inner join *** a with (updlock) on a.***=t.***   
    where (isnull(t.***,0) + isnull(a.***,0)>isnull(a.***,0)) '          
 exec(@sSql)     
 if @@rowcount > 0        
 begin        
   set @ret=3 --数据校验          
   return        
 end  
   
 update *** set ***=*** from *** inner join #arr on ***.*** = #arr.id       
   
 set @sSql=N'update a set a.***=isnull(a.***,0)+isnull(t.***,0), a.***=isnull(a.***,0)+isnull(t.***,0)   
 from *** a join '+@tablename+' t on a.***=t.autoid'   
 exec(@sSql)  
 set @ret=0          
 
 return   

go

---视图举例

IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[***'))
 DROP ***
GO
CREATE view   ***  as
select pa.*** as ***, rd.ID as ID
from *** rds WITH(NOLOCK)
inner join *** pad on rds.***=pad.***
inner join *** pa on rds.***=pa.***
inner join *** rd on rd.***=N'***'
go

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值