这函数怎么写

Dision LI 2010-08-24 10:16:25

CREATE function UnitConvert(@InNum numeric(10, 3) ,@Unit varchar(20))
returns numeric(10, 3)
begin
declare @Num numeric(10, 3)



return @Num
end

-----------
SELECT count(*)
FROM dbo.URes INNER JOIN
dbo.Unit ON dbo.URes.FUnit = dbo.Unit.FID where Unit.FUnit='只'

count(*)=0 .如果单位相同则直接更新
count(*)>0 如果单位不相同则 @原单位进行换算 后 直接更新

select FExp,UnitConvert.* from UnitConvert

FExp列值 =@原单位 * 1000 * 1000

...全文
63 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
duanzhi1984 2010-08-24
  • 打赏
  • 举报
回复
函数中好像不能用动态语句。。。

试着用存储过程 实现。。

用OUTPUT进行实现。
Dision LI 2010-08-24
  • 打赏
  • 举报
回复
谢谢3楼4楼,现在还差动态换算 而不是固定的@num = @innum * 1000 * 1000
http://topic.csdn.net/u/20100824/10/491c369b-4879-4716-a484-5707f4581432.html?54507
详细可转移到这看 ,想在函数内实现一起实现可以吗

-狙击手- 2010-08-24
  • 打赏
  • 举报
回复
CREATE function UnitConvert(@InNum numeric(10, 3) ,@Unit varchar(20))
returns numeric(10, 3)
begin
declare @Num numeric(10, 3)
if existss(SELECT 1
FROM dbo.URes INNER JOIN
dbo.Unit ON dbo.URes.FUnit = dbo.Unit.FID where Unit.FUnit=@unit)
set @num = @innum
else
set @num = @innum * 1000 * 1000
return @Num
end
黄_瓜 2010-08-24
  • 打赏
  • 举报
回复
--不知道你的变量都是用到那得
if not exists(SELECT 1
FROM dbo.URes INNER JOIN
dbo.Unit ON dbo.URes.FUnit = dbo.Unit.FID where Unit.FUnit='只'
)

upteda......
else
set @Num = @Num * 1000 *1000

update.......
Dision LI 2010-08-24
  • 打赏
  • 举报
回复
我想在函数里做个查询判断count(*)然后转换单位,
单位的公式是根据另外表select FExp,UnitConvert.* from UnitConvert
来判断的,最后返回实际的单位数量,而不是固定的
ksaponka_tang 2010-08-24
  • 打赏
  • 举报
回复

CREATE function UnitConvert(@InNum numeric(10, 3) ,@Unit varchar(20),@OrigUnit varchar(20))
returns numeric(10, 3)
begin
declare @Num numeric(10, 3)
set @Num = 1.000;
if(@Unit!=@OrigUnit)
set @Num = @Num * 1000 *1000
return @Num
end


這是函數的作用,操作表不要在函數內處理

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧