WhatsnewinMicrosoft2000(二)
来源:互联网 发布:油画在线网络课程 编辑:程序博客网 时间:2024/05/21 12:42
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
可能大家还不是太清楚,自定义函数有什么作用。以前在优化的贴子中提到过,尽量不要是用游标,因为这样会带来更大的
系统开销。但是有的时候你必须使用游标,举一个例子,比如我希望得到一个内容是一段汉字的字段的拼音。但是要想把汉字转化
为拼音,必须通过查表来完成,那么你就必须先开出一个游标,然后再对字段中的每一个字进行查表。
但是现在我们可以使用自定义函数来完成同样的操作,就大大的节省了系统开销。Example:/*使用自定义函数*/
CREATEFUNCTIONTranslate(@Original_Textvarchar(100))RETURNSvarchar(500)AS
BEGIN DECLARE@intLengthastinyint DECLARE@strTempasvarchar(10)
DECLARE@strResultasvarchar(500) DECLARE@strCharasvarchar(2)
DECLARE@iastinyint SET@intLength=len(@Original_Text)
SETstrResult='' WHILE@i<=@intLength BEGIN
SELECT@strChar=substring(@Original_Text,@i,1)
SET@strTemp=null
SELECT@strTemp=spellFROMwordspellWHEREword=@strChar
SELECT@strResult=@strResult+isnull(@strTemp,@strChar)
SELECT@i=@i+1 END RETURNstrResultENDGO
UPDATEphonecodeSETnamesame=Translate(name),addsame=Translate(address)
/*使用游标*/createproctransasDeclare@iinteger, @charvarchar(2),
@tempchrvarchar(2), @strtempvarchar(100), @strtemp1varchar(100),
@strnamevarchar(100), @straddrvarchar(100)
DeclareCur_transCursorlocalDYNAMICFor select[name],[address]
fromphonecodeselect@char=""OpenCur_transFetchCur_trans
Into@strname,@straddrSetnocountonwhile@@Fetch_Status=0begin select@i=1
select@strtemp="" select@strname=ltrim(rtrim(@strname))
while@i<=len(@strname) begin
select@char=substring(@strname,@i,1) select@tempchr=null1<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
在SQL2000里面,用户可以建立自定义的函数,函数返回值可以是一个值,也可以是一个表。可能大家还不是太清楚,自定义函数有什么作用。以前在优化的贴子中提到过,尽量不要是用游标,因为这样会带来更大的
系统开销。但是有的时候你必须使用游标,举一个例子,比如我希望得到一个内容是一段汉字的字段的拼音。但是要想把汉字转化
为拼音,必须通过查表来完成,那么你就必须先开出一个游标,然后再对字段中的每一个字进行查表。
但是现在我们可以使用自定义函数来完成同样的操作,就大大的节省了系统开销。Example:/*使用自定义函数*/
CREATEFUNCTIONTranslate(@Original_Textvarchar(100))RETURNSvarchar(500)AS
BEGIN DECLARE@intLengthastinyint DECLARE@strTempasvarchar(10)
DECLARE@strResultasvarchar(500) DECLARE@strCharasvarchar(2)
DECLARE@iastinyint SET@intLength=len(@Original_Text)
SETstrResult='' WHILE@i<=@intLength BEGIN
SELECT@strChar=substring(@Original_Text,@i,1)
SET@strTemp=null
SELECT@strTemp=spellFROMwordspellWHEREword=@strChar
SELECT@strResult=@strResult+isnull(@strTemp,@strChar)
SELECT@i=@i+1 END RETURNstrResultENDGO
UPDATEphonecodeSETnamesame=Translate(name),addsame=Translate(address)
/*使用游标*/createproctransasDeclare@iinteger, @charvarchar(2),
@tempchrvarchar(2), @strtempvarchar(100), @strtemp1varchar(100),
@strnamevarchar(100), @straddrvarchar(100)
DeclareCur_transCursorlocalDYNAMICFor select[name],[address]
fromphonecodeselect@char=""OpenCur_transFetchCur_trans
Into@strname,@straddrSetnocountonwhile@@Fetch_Status=0begin select@i=1
select@strtemp="" select@strname=ltrim(rtrim(@strname))
while@i<=len(@strname) begin
select@char=substring(@strname,@i,1) select@tempchr=null1<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- WhatsnewinMicrosoft2000(二)
- WhatsnewinMicrosoft2000(七)
- WhatsnewinMicrosoft2000(八)
- WhatsnewinMicrosoft2000(六)
- WhatsnewinMicrosoft2000(三)
- WhatsnewinMicrosoft2000(四)
- WhatsnewinMicrosoft2000(一)
- (二)
- (二):基二FFT
- 凤凰涅磐(二十-二十五)
- 凤凰涅磐(二十六-二十七)
- 软件中的八二原则(二)
- 二 迭代器(二)相关辅助函数
- 二.Java编程基础(二)
- java提高篇(二二)-----LinkedList
- java提高篇(二二)-----LinkedList
- 黑客编程入门(二。二)
- (二十)java小练习二
- 我收藏的Transact_SQL小手册,适合初学者
- 利用正则表达式, 验证控制文本框的输入字符类型
- 论文110
- WhatsnewinMicrosoft2000(一)
- 在 Visual C++ 中使用内联汇编
- WhatsnewinMicrosoft2000(二)
- 对话框控件属性的修改
- 何隐藏SysbaseSQLAnywhere8.0在系统状态条上的的图标?
- 最新结束进程方法
- 史密斯图
- 【MFC】doc_view结构中让窗口一开始就最大化探讨
- 扩展可伸缩 Oracle 与 PHP George Schlossnagle
- 多类型业务处理技巧
- 开天地