社区
MS-SQL Server
帖子详情
函数和存储过程之间的区别
让你望见影子的墙
2008-04-18 09:14:56
谁能告诉我存储过程和函数的本质区别?两个都能够被调用,也都可以有输入参数,输出参数,都可以包含一定的sql语句,什么时候用存储过程,什么时候用函数呢?
...全文
128
6
打赏
收藏
函数和存储过程之间的区别
谁能告诉我存储过程和函数的本质区别?两个都能够被调用,也都可以有输入参数,输出参数,都可以包含一定的sql语句,什么时候用存储过程,什么时候用函数呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mrt_chen
2011-11-21
打赏
举报
回复
晓风残月0110
2008-04-18
打赏
举报
回复
另外函数有一些限制
/*自定义函数的使用有些限制
包括UPDATE和DELETE,都不可以,自定义函数和存储过程的定位是不一样的,
自定义函数主要用于数据的计算,只能控制函数内部定义的局部变量,包括游标和表,
都必须在函数内部定义才能使用,对外部数据库作出的任何永久性修改,都是禁止的。
具体来说,不能在函数中执行的操作包括:对数据库表的修改,
对不在函数上的局部游标进行操作,发送电子邮件,尝试修改目录,
以及生成返回至用户的结果集。
允许的操作也不少的,具体包含以下这些:
=> DECLARE 语句,该语句可用于定义函数局部的数据变量和游标。
=> 为函数局部对象的赋值,如使用 SET 为标量和表局部变量赋值。
=> 游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。
不允许使用 FETCH 语句将数据返回到客户端。
仅允许使用 FETCH 语句通过 INTO 子句给局部变量赋值。
=> 除 TRY...CATCH 语句之外的控制流语句。
=> SELECT 语句,该语句包含具有为函数的局部变量赋值的表达式的选择列表。
=> INSERT、UPDATE 和 DELETE 语句,这些语句修改函数的局部表变量。
=> EXECUTE 语句,该语句调用扩展存储过程。
晓风残月0110
2008-04-18
打赏
举报
回复
什么时候用不好说,看具体情况
先了解一下区别吧,慢慢就知道怎么用了
-----------------函数和proc的区别---------------------------
1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
4. 当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。
Procedure cache中保存的是执行计划(execution plan) ,当编译好之后就执行procedure cache中的execution plan,之后SQL SERVER会根据每个execution plan的实际情况来考虑是否要在
cache中保存这个plan,评判的标准一个是这个execution plan可能被使用的频率;其次是生成这个plan的代价,也就是编译的耗时。保存在cache中的plan在下次执行时就不用再编译了。
hery2002
2008-04-18
打赏
举报
回复
1.看看以前的帖子:
http://topic.csdn.net/t/20030806/16/2116067.html
http://topic.csdn.net/t/20021202/15/1223530.html
2.看看联机丛书:
存储过程:
http://technet.microsoft.com/zh-cn/library/ms191428.aspx
用户自定义函数:
http://technet.microsoft.com/zh-cn/library/ms190704.aspx
wlinglong
2008-04-18
打赏
举报
回复
看哪个顺眼用哪个 哈哈
liangCK
2008-04-18
打赏
举报
回复
这个,,,看看联机丛书好了。
MySQL
存储过程
和
函数
使用总结
什么是
存储过程
和
函数
存储过程
和
函数
是事先经过编译并存储在数据库中的一段SQL语句的集合,调用
存储过程
和
函数
可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器
之间
的传输,对于提高数据处理的效率是有好处的。
存储过程
和
函数
的
区别
在于
函数
必须有返回值,而
存储过程
没有,
存储过程
的参数可以使用IN、OUT、INOUT类型,而
函数
的参数只能是IN类型的。如果有
函数
从其他类型的数据库迁移到MySQL,那么可能因此需要将
函数
改造成
存储过程
。 为什么使用
存储过程
和
函数
在完成一个逻辑操作时,有时会执行多条SQL语句,此外这些SQL语句的执行顺序也不是固定的,它会根据条件的变化
MYSQL
存储过程
编程
mysql
存储过程
编程教程: MySQL
存储过程
编程基础 -- 指南,基本语句,
存储过程
中的 SQL 和错误处理 创建 MySQL
存储过程
程序 -- 事务处理,内建
函数
,
存储过程
函数
和触发器 在应用程序中使用 MySQL
存储过程
程序 -- 在 PHP,Java,Perl,Python 和 .NET(C# 和 VB.NET)中使用存储过 程编程 优化 MySQL
存储过程
程序 -- 安全性,基本和高级 SQL 调试,优化
存储过程
代码,并且进行最有效的编程实践
mysql基本
函数
mysql
存储过程
基本
函数
呈现了对字符串,转码,日期类型
之间
的转换
访问SQL Server元数据的三种方法
下面我们将介绍几种获取元数据的方法。 获取元数据 使用系统
存储过程
与系统
函数
访问元数据 获取元数据最常用的方法是使用 SQL Server 提供的系统
存储过程
与系统
函数
。 系统
存储过程
与系统
函数
在系统表和元数据
之间
提供了一个抽象层,使得我们不用直接查询系统表就能获得当
存储
函数
和
存储过程
的
区别
---
存储过程
和存储
函数
的
区别
---语法
区别
:关键字不一样, ------------存储
函数
比
存储过程
多了两个return。 ---本质
区别
:存储
函数
有返回值,而
存储过程
没有返回值。 ----------如果
存储过程
想实现有返回值的业务,我们就必须使用out类型的参数。 ----------即便是
存储过程
使用了out类型的参数,起本质也不是真的有了返回值, ----------而是在
存储过程
...
MS-SQL Server
34,588
社区成员
254,588
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章