新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > sql server教程 > 正文:解析:怎样将存储过程 重新编写为 函数

解析:怎样将存储过程 重新编写为 函数

新客网 XKER.COM 2007-10-24 来源: yashi 收藏本文

本文主要描述了如何确定是否将现有存储过程逻辑重新编写为用户定义函数。例如,如果希望直接从查询唤醒调用存储过程,可将代码重新打包为用户定义函数。

一般来说,如果存储过程返回一个(单个)结果集,则定义表值函数。如果存储过程计算标量值,则定义标量函数。

 

表值函数的条件

如果存储过程满足以下条件,则可作为重新编写为表值函数的很好的候选存储过程:

 

逻辑可在单个 SELECT 语句中表现,但它是存储过程而不是视图,只是由于需要参数。可使用内嵌表值函数处理这种情况。

 

 

存储过程不执行更新操作(除了对表变量外)。

 

 

不需要动态 EXECUTE 语句。

 

 

存储过程返回一个结果集。

 

 

存储过程的主要目的是生成要装载到临时表的中间结果,SELECT 语句随后将查询临时表。可使用表值函数编写 INSERT...EXEC 语句。例如,请看下面的序列:

 

INSERT #temp EXEC sp_getresults
SELECT ...
    FROM #temp, t1
    WHERE ...

 

 

可将存储过程 sp_getresults 重新编写为表值函数,如 fn_results(),这意味着可将上面的语句重新编写为:

 

SELECT ...
FROM fn_results(), t1
WHERE ...
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐