三九宝宝网宝宝百科宝宝知识

SQL中存储过程和函数的区别

02月16日 编辑 39baobao.com

[编写安全的SQLServer扩展存储过程]SQL Server 的扩展存储过程,其实就是一个普通的 Windows DLL,只不过按照某种规则实现了某些函数而已。近日在写一个扩展存储过程时,发现再写这类动态库时,还是有一些需要特别...+阅读

本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。

函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少

1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。

2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。

3. 存储过程一般是作为一个独立的部分来执行(EXEC执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于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在下次执行时就不用再编译了。

以下为关联文档:

存储过程:轻松过滤SQLServer连接SQL Server数据库管理员需要时刻保持对服务器上连接的警惕。为了某种模式的应用,管理员需要监控这些连接;列出具有问题的连接,然后采取行动来进行修整;或者是在某个选中的连接...

用ASP调用SQLServer的视图和存储过程一、前言 ASP (Active Server Pages) 是服务器端的脚本编写环境,它由微软公司的IIS3.0以上版本支持。它可用来创建动态 Web 页或生成功能强大的 Web应用程序。ASP页是包括 HT...

在DataStage中怎么调用Sybase IQ数据库中的存储过程虽然具体没有用datastage连接sybase IQ数据库,但按照以往连接DB2、sqlserver、ORACLE这些数据库调用存储过程的经验来看,估计需要配置ODBC才行了。 直接使用sybase stage一般...

linux定时任务调用shell时脚本中的存储过程不执行1、被执行的脚本没有执行权限,这种情况 直接授权 chmod 755 xxx.sh 2、被执行的脚本编码有问题,这种情况直接转码 dos2unix xxx.sh 我们也可下载一个windows版的dos2unix,转完...

VB中语句与函数的区别msgbox是函数,它有三种表达方式。 1。使用print语句: print msgbox("提示文字信息",数值,"标题") 2。将其视为方法使用: msgbox"提示文字信息",数值,"标题" 3。使用赋值语句: x=msgbox("提示文字...

plsql developer里怎么写存储过程和执行存储过程怎么查看存储--建立测试数据: create table BOOK(编号 number(10),书名 varchar2(20),价格 varchar2(20)) insert into BOOK values(100,'aa','88.77') select * from BOOK --建立存储过程: c...

plsql存储过程如何调试1. 打开PL/SQL Developer如果 在机器上安装了PL/SQL Developer的话,打开PL/SQL Developer界面输入 用户名,密码和host名字,这个跟在程序中web.config中配置的完全相同,点击确定...

在java中怎样删除所有存储过程直接用jdbc执行sql语句块declare procName varchar(500) declare cur cursor -- 定义个游标 for select [name] from sysobjects where type = 'p' open cur -- 打开游标 fe...

如何在DB2中执行存储过程1、db2 create database 数据库名 <-- 创建数据库 2、db2 connect to 数据库名 user 用户名 using 用户密码 <-- 连接数据库 3、db2 -tvf otpdb_v3_db2.sql <-- 为新...

推荐阅读
图文推荐