部分代码

create table #t(code varchar(10),p1 varchar(20),p2 varchar(20),p3 varchar(20))
insert into #t select 'aaa','dw-dh','dw*dh','dw-1'
insert into #t select 'bbb','(dw+dh)*2','dw-2','dw+1'
insert into #t select 'ccc','dw-dh-2','dw*dh+1','dw-6'
create table #t_d(code varchar(10),dw varchar(10),dh varchar(10),p1 varchar(20),p2 varchar(20),p3 varchar(20))
insert into #t_d select 'aaa','45','4','','',''
insert into #t_d select 'bbb','3','55','','',''
insert into #t_d select 'ccc','41','23','','',''
 
 
create  proc   test
@ss   varchar(100) 
,@z   decimal(18,2)   output 
as 
declare   @sql   nvarchar(1000) 
set   @sql= 'select   @re= '+@ss
exec   sp_executesql   @sql,N'@re   decimal(18,2)   output ',@z   output 
go 上面这个存储过程单独的示例用法如下
declare @aa decimal(18,2)
exec m_compute '343*34',@aa output
print @aa


create proc p_compute as
declare @p1 varchar(20)
declare @code varchar(20)
declare @aa decimal(18,2)
declare @i int
declare @col varchar(10)
declare @sql varchar(800)
declare @upsql varchar(800)
declare @cursql varchar(1000)
declare @curupsql varchar(100)
set @i = 1
while @i < 4
 begin
  set @col = 'p'+cast(@i as varchar(10))
  set @upsql = 'update #t_d set '+@col+' =replace(replace(t.'+@col+',''dw'',d.dw),''dh'',d.dh) from #t t,#t_d d where t.code = d.code'
  exec(@upsql)
--  set @cols = @cols  + @col
--  set @sql = 'select code,'+ @cols + ', from #t'
--  print @sql 
 
 
set @cursql = 'declare c1 cursor  for
select code,'+@col+' from #t_d'
exec(@cursql)
open c1
fetch next from c1 into @code,@p1
while @@fetch_status = 0 
begin
exec test @p1,@aa output
print @aa
set @curupsql = 'update #t_d set '+@col+ '='+ cast(@aa as varchar(20))+' where code = '''+@code+''''
exec(@curupsql)
--update #t_d set p1 = @aa where code = @code
fetch next from c1 into @code,@p1
end
close c1
deallocate c1
set @i = @i+1
end 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值