sqlserver 2005 自定义函数的问题
程序员文章站
2024-02-22 23:28:16
...
平台报表存储过程的开发,需要根据数据字典给定的特定字母进行查找。这样需要写很多字符串,假如遇到增加计费类型就得到处改存储过程中的字符串。
[b]想法:[/b]
为了方便,我把需要修改的字符串定义成一个函数这样只要在存储过程里调用函数即可。
将来扩展也不需要修改其他的存储过程,只要修改方法就可以了。
[b]步骤:[/b]
1.创建函数
我创建标量值函数 getTypeCode
返回指定的字符串
2.调用函数查找数据
[img]http://dl.iteye.com/upload/attachment/0067/1438/448c177e-1e7c-3da6-bd35-1e6e2813b055.bmp[/img]
[color=red]没有达到我预期的结果根据函数返回值没有找到数据库中的记录[/color]
这是什么回事了呢?
[b]猜想:[/b]
select 中的 in 是不是直接把函数返回值当成一个字符了?
于是自己收入修改一下typeCode,验证自己的想法
[img]http://dl.iteye.com/upload/attachment/0067/1440/307db42d-529b-3178-9faa-71cb599ba648.bmp[/img]
[color=red]如图所示恰好验证了我的想法[/color]
这时候想是不是函数用法不对?在网上找了方法,用另外一种自定义函数[color=darkblue][url=http://baike.baidu.com/view/4935315.htm]表值函数[/url][/color]
创建函数
这样的查询结果恰好是我想要的结果
如图所示:
[img]http://dl.iteye.com/upload/attachment/0067/1445/6f941cfd-fce2-3c89-9f7b-8b6ca00b5025.png[/img]
[b]想法:[/b]
为了方便,我把需要修改的字符串定义成一个函数这样只要在存储过程里调用函数即可。
将来扩展也不需要修改其他的存储过程,只要修改方法就可以了。
[b]步骤:[/b]
1.创建函数
我创建标量值函数 getTypeCode
返回指定的字符串
create function getTypeCode()
returns varchar(20)
as
begin
declare @str varchar (20)
set @str = '"A"' + ',' + '"C"'
set @str = replace(@str,'"','''')
return @str
end
2.调用函数查找数据
[img]http://dl.iteye.com/upload/attachment/0067/1438/448c177e-1e7c-3da6-bd35-1e6e2813b055.bmp[/img]
[color=red]没有达到我预期的结果根据函数返回值没有找到数据库中的记录[/color]
这是什么回事了呢?
[b]猜想:[/b]
select 中的 in 是不是直接把函数返回值当成一个字符了?
于是自己收入修改一下typeCode,验证自己的想法
[img]http://dl.iteye.com/upload/attachment/0067/1440/307db42d-529b-3178-9faa-71cb599ba648.bmp[/img]
[color=red]如图所示恰好验证了我的想法[/color]
这时候想是不是函数用法不对?在网上找了方法,用另外一种自定义函数[color=darkblue][url=http://baike.baidu.com/view/4935315.htm]表值函数[/url][/color]
创建函数
create function getIncomeCode()
returns table
as
return select typeCode from hzfaq_fee_data where typeCode in ('A','C');
这样的查询结果恰好是我想要的结果
如图所示:
[img]http://dl.iteye.com/upload/attachment/0067/1445/6f941cfd-fce2-3c89-9f7b-8b6ca00b5025.png[/img]
上一篇: java 验证码的生成实现
下一篇: c#实现摄像头拍照功能示例