函数中都有哪些功能,但存储过程中没有? [复制]
Posted
技术标签:
【中文标题】函数中都有哪些功能,但存储过程中没有? [复制]【英文标题】:what are the features in Functions but not in Stored Procedure? [duplicate]函数中有哪些功能,但存储过程中没有? [复制] 【发布时间】:2021-09-17 21:44:02 【问题描述】:1)函数中有哪些特性,而存储过程中没有?
2)什么时候在sql中使用函数而不是存储过程?
3)函数相对于存储过程的优势是什么?
嗨朋友们,我在谷歌上搜索了我只基金与函数和存储过程的区别,但没有得到函数相对于存储过程的好处。 Functions有什么特点,Stored Procedure也有同样的特点,那为什么要使用Functions呢?
何时使用函数而不是存储过程,我对函数感到困惑
1)什么时候在sql中使用函数而不是存储过程?
2)函数相对于存储过程的优势是什么?
谁知道,请帮帮我
【问题讨论】:
我什至不明白这个问题的基础,因为它们是如此不同。函数返回值并且可以在查询中使用。存储过程本质上是脚本,不能在 SQL 语句中使用。 函数中有哪些功能可用,而存储过程中没有? 它们是完全不同的对象,@Anji。它们提供完全不同的东西。 这能回答你的问题吗? Function vs. Stored Procedure in SQL Server 【参考方案1】:函数和存储过程的相似之处在于它们都用于存储以后可以运行的功能,但它们也有很大不同
我遇到的一些重要差异:
函数可以在SELECT
语句中调用,过程不能
虽然函数可以像 function_name()
一样调用,但过程需要显式的 CALL
关键字:CALL procedure_name([args])
。
函数可以返回一个值,过程可以返回多个
过程并不完全返回值,而是可以获取传递的类似引用的参数。然后可以将它们分配并用作返回值。
常规参数标记为IN
用于输入,用于返回值的参数标记为OUT
用于输出。你可以有两个参数:INOUT
。来自mysql docs的示例
CREATE PROCEDURE citycount (IN country CHAR(3), OUT cities INT)
BEGIN
SELECT COUNT(*) INTO cities FROM world.city
WHERE CountryCode = country;
END
另一个区别是stored procedures can return tables,而函数则不能。(除非您提供一个/列作为输入)
【讨论】:
我个人会说过程和功能并不相似;它们实际上非常不同。 "另一个区别是存储过程可以返回表,而函数不能。" 这个说法也是完全错误的。表值函数肯定会返回“表”(数据集);顾名思义,它们返回一个表格结果集。 “过程不完全返回值,但可以获取传递的类似引用的参数。” 如果过程不返回值,RETURN
运算符是什么, 或OUTPUT
参数?
是的,你是对的。我的意思是它们的相似之处在于它们都可以用于存储某些功能,仅此而已。我没有看到任何关于RETURN
或OUTPUT
的程序。从谷歌搜索来看,OUTPUT
似乎是 OUT
所做的,但在 SQL Server 中
给你举几个例子,@Tim:db<>fiddle。以上是关于函数中都有哪些功能,但存储过程中没有? [复制]的主要内容,如果未能解决你的问题,请参考以下文章