编写一个存储过程,如果数据库中有字段a(int),b(int),c(int),d(float)计算(a/b)*(所有项中c的乘积)存到d中

如题,希望各位大侠可以帮帮忙... 如题,希望各位大侠可以帮帮忙 展开
 我来答
执行fzg
2011-10-24
知道答主
回答量:53
采纳率:0%
帮助的人:19.4万
展开全部
CREATE PROCEDURE SP_js
AS
set nocount on
select c into #TempTable from 要计算的表名 where 1=2
ALTER TABLE aa ADD id_Tempt int IDENTITY(1,1) PRIMARY KEY
insert into #TempTable select c from 要计算的表名--如果有条件加where
declare @TempID int
declare @intCount int
set @TempID=1
declare @c int
select @intCount =count(*) from #TempTable
where @TempID<=@intCount
begin
select @c=@c*c from #TempTable where id_Tempt =@TempID
set @TempID=@TempID+1
end
update 要计算的表名 set d=(a/b)* @c------------有条件就加 where
select * from 要计算的表名
drop table #TempTable
set nocount off
GO

-----------上述代码复制后执行,exec SP_js
-----------修改表名后即可实现,如果有条件加where 条件
-----------也可用游标实现,只是游标有时出现异常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龙蝶SC龙蝶
2011-10-23
知道答主
回答量:8
采纳率:0%
帮助的人:2.4万
展开全部
在木有超出int.maxvalue的值的情况下可以 这样d=(float)(a/b)*)*(float)(所有项中c的乘积);
如果超出;了最大范围 那么久必须每个转换( 比如(float)c*(float)b);
希望对你有帮助哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5ba75e4
2011-10-23 · TA获得超过2045个赞
知道大有可为答主
回答量:1775
采纳率:60%
帮助的人:980万
展开全部
不知道我这么算对不对,如果对存储过程如下
a b c d
1 2 3 12
3 5 2 14.4
5 1 4 120

create proc stored
as
begin
update 表名 set d=(a/b)*sum(c)
end
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式