MS SQLSERVER 通过创建存储过程,使用EXEC()函数计算字符串数学公式来替换计算列的方法

MS SQLSERVER 通过创建存储过程,使用EXEC()函数计算字符串数学公式来替换计算列的方法:
如:表中有数、量、应结公式、实结公式四列,为字符型数学公式,我想把这四列的计算结果结算出来并写入到数计算值、量计算值、应结公式计算值、实结公式计算值。通过sql server创建存储过程并执行该过程的方法实现。
一、存储过程代码(sql server)

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[clkz_shu_liang_yjgs_sjgs_CalcAndWrite_Access] 
AS
BEGIN
SET NOCOUNT ON;
declare @sql varchar(max)
declare @bh varchar(max)
declare @shu_str varchar(max)
declare @liang_str varchar(max)
declare @yjgs_str varchar(max)
declare @sjgs_str varchar(max)
-- 声明游标
DECLARE C_Employees CURSOR FAST_FORWARD FOR
    SELECT 编号,,,应结公式,实结公式  
    FROM 车辆开支 
    ORDER BY 编号;
OPEN C_Employees;
-- 取第一条记录
FETCH NEXT FROM C_Employees INTO @bh,@shu_str,@liang_str,@yjgs_str,@sjgs_str;
set @sql='DECLARE 
@shu_val AS decimal(18,2),
@liang_val AS decimal(18,2),
@yjgs_val AS decimal(18,2),
@sjgs_val AS decimal(18,2);
select @shu_val='+@shu_str+';
select @liang_val='+@liang_str+';
select @yjgs_val='+@yjgs_str+';
select @sjgs_val='+@sjgs_str+';'
WHILE @@FETCH_STATUS=0
BEGIN
    -- 操作
   set @sql=@sql+'UPDATE 车辆开支 SET 数计算值=@shu_val,量计算值=@liang_val,应结公式计算值=@yjgs_val,实结公式计算值=@sjgs_val WHERE 编号='+@bh;
    -- 取下一条记录
    FETCH NEXT FROM C_Employees INTO @bh,@shu_str,@liang_str,@yjgs_str,@sjgs_str;
    set @sql=@sql+'select @shu_val='+@shu_str+';
    select @liang_val='+@liang_str+';
    select @yjgs_val='+@yjgs_str+';
    select @sjgs_val='+@sjgs_str+';'
END
-- 关闭游标
CLOSE C_Employees;
-- 释放游标
DEALLOCATE C_Employees;
exec(@sql)
	
END

二、运行存储过程(在企业管理器中运行),最快捷的运行方法:在存储过程名称上右键点击运行即可。

USE [sydweb]
GO
DECLARE	@return_value int
EXEC	@return_value = [dbo].[clkz_shu_liang_yjgs_sjgs_CalcAndWrite_Access]
SELECT	'Return Value' = @return_value
GO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值