科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道解析:怎样将存储过程 重新编写为函数

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:赛迪网 yashi 来源:天新网 2008年3月27日

关键字: Mssql SQL SQL Server 数据库

  • 评论
  • 分享微博
  • 分享邮件

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

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

表值函数的条件

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

逻辑可在单个 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 ...
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章