`

存储过程与函数的区别,函数可以嵌入sql语句from中使用,存储过程不行

阅读更多
http://blog.csdn.net/nutian/article/details/2311788

存储过程与函数的区别

本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。
     函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少

      由于我现在基本上是DBA的工作,因此平时也看一些数据库方面的书籍。但是我一直对存储过程和函数之间的区别掌握不透。我向来认为存储过程可以实现的操作,函数也一样可以实现。最近,刚好大学的老师给我们上SQL-Server的课程,我对这个问题的疑惑终于慢慢解开。今天晚上顺便看了些网上的资料,觉得以下分析比较合理:
      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在下次执行时就不用再编译了。
分享到:
评论

相关推荐

    存储过程中怎么动态执行sql语句

    通过以上两个示例可以看出,在Oracle存储过程中实现动态SQL语句的关键在于利用`EXECUTE IMMEDIATE`动态执行SQL语句以及通过创建包的方式来实现更为复杂的动态数据处理逻辑。这两种方法不仅提高了代码的灵活性,还...

    存储过程和函数的区别

    5. **可以在SELECT语句中使用**:函数可以直接嵌入到`SELECT`语句中作为表达式的一部分,而存储过程则不能这样使用。 6. **调用方式**:通常直接在SQL查询中作为函数调用,如`SELECT 函数名称(参数列表) FROM 表名`...

    sqlserver 存储过程 函数 常用知识点

    在SQL Server中,存储过程和函数是数据库管理与开发中的重要组成部分,它们为数据库操作提供了高效、可重用和安全的途径。以下是关于SQL Server存储过程和函数的一些常用知识点: 1. **存储过程(Stored Procedures...

    oracle pl/sql 存储过程和函数与触发器

    在Oracle中,可以使用`EXECUTE`语句来调用存储过程和函数,也可以在SQL语句中直接嵌入函数。参数传递给这些程序单元,可以是IN(输入)、OUT(输出)或IN OUT(输入输出)类型。 六、游标和循环 游标是PL/SQL中处理...

    解密SQL触发器、存储过程、函数

    函数与存储过程类似,也是预定义的代码块,但主要区别在于函数必须返回一个值,而存储过程可能不返回任何值。SQL函数可以是内置的(如计算平均值AVG或求和SUM),也可以是用户自定义的(UDF,User-Defined Function...

    4.在INFORMIX-ESQL/C中嵌入SQL语句.doc

    ### 在INFORMIX-ESQL/C中嵌入SQL语句 #### 一、概述 在进行数据库应用程序开发的过程中,开发者经常需要将SQL语句嵌入到高级编程语言中执行数据库操作。INFORMIX-ESQL/C就是一种允许开发者在C语言环境中直接使用...

    SQL server存储过程习题,SQL触发器习题.rar

    6. **动态SQL**:存储过程中可以嵌入动态SQL语句,根据需要在运行时生成并执行SQL。 7. **返回值**:存储过程可以设置返回值,用`RETURN`语句传递结果给调用者。 **SQL触发器**: 1. **定义**:触发器是一种特殊的...

    MYSQL的存储过程和函数简单写法

    函数在SQL查询中可以直接嵌入使用,而存储过程通常需要通过调用执行。 【使用提示】 - 当存储过程中没有SQL语句时,最好设置`NO SQL`,以告诉系统该过程不涉及数据操作,提高效率。 - 存储过程的安全性可以通过`...

    在VC++嵌入SQL的详细介绍

    在VC++中嵌入SQL是一种常见的数据库操作方式,允许开发者在C++代码中直接使用SQL语句来与数据库进行交互。这种方式使得程序可以直接处理数据库任务,如插入、删除和查询等,而无需通过额外的API调用。嵌入SQL语言的...

    在Sql Server 数据库中利用存储过程实现动态交叉表

    因此,需要使用EXEC()函数或sp_executesql存储过程来执行这些动态构建的SQL语句。 6. **错误处理和安全性**:在执行动态SQL时,必须考虑SQL注入的风险,并进行适当的错误处理。此外,存储过程应当设计有合理的错误...

    Oracle教案 Oracle 存储过程 游标 SQL语句 PL/SQL

    PL/SQL 代码块可以嵌入到 SQL 语句中,或者作为独立的存储过程、函数或触发器存在。 5. **动手实践** - 首先,了解 Oracle 的基本安装和常用命令至关重要。Oracle 提供不同版本以满足不同需求,例如企业版、标准版...

    oracle存储过程和函数PPT

    函数与存储过程类似,也是预编译的代码块,但它们的主要区别在于函数必须返回一个值,而存储过程可能不返回任何值。函数可以作为查询的一部分被嵌入到SQL语句中,提高了代码的可读性和效率。比如,你可以创建自定义...

    第10章 存储过程和函数PPT

    存储过程是预编译的SQL语句集合,可以在数据库中被保存并重复调用。它们可以接受参数、执行一系列复杂的操作,并返回结果。存储过程的优势在于减少网络传输,提高性能,同时还能增强安全性,因为它们可以设置权限...

    触发器、存储过程和函数三者有何区别四.pdf

    - 函数与存储过程相似,也是预编译的代码块,但它们的主要区别在于函数必须有返回值。函数可以接收输入参数,并根据这些参数产生一个或多个输出结果。 - 在SQL Server中,函数分为标量函数(返回单一值)、内嵌表...

    嵌入式SQL语句在VC++数据库系统开发中的技巧

    嵌入式SQL语句在VC++数据库系统开发中扮演着重要的角色,它允许开发者将SQL命令直接嵌入到C++程序中,实现高效且灵活的数据处理。本文将深入探讨嵌入式SQL的概念、构建方法以及在VC++环境下的具体应用。 嵌入式SQL...

    第11章MySQL存储过程与函数.pdf

    - 非确定性函数不能在函数中使用,但在存储过程中可以。 - 存储过程通常单独执行,而函数可以嵌入到查询语句中。 2. 创建存储过程和函数的示例: - `getnamebysno` 是一个存储过程,用于根据学号查询学生姓名。...

    SQL语句大全 电子书

    6. **视图与存储过程**:视图提供了一种虚拟表的视角,存储过程则可以封装一系列的SQL操作,提高代码的重用性和安全性。书中将阐述这两者的创建、修改和使用方法。 7. **索引与优化**:索引能显著提升查询性能,书...

    oracle存储过程、函数和触发器

    存储过程是一组预先编译的SQL语句,存储在数据库中,可以按需调用执行。它们允许开发者将复杂的业务逻辑封装起来,减少网络通信,提高效率。在Oracle中,创建存储过程使用`CREATE PROCEDURE`语句,调用则通过`...

    SQL语句嵌套的实例.rar_SQL语句_sql 语句_sql嵌套

    8. **动态SQL**:在某些场景下,SQL语句的嵌套还包括动态构建SQL字符串,根据运行时的条件生成不同的查询,常见于存储过程和函数中。 以上是关于SQL语句嵌套的一些主要知识点。在实际应用中,理解并熟练掌握这些...

    数据库oracle中PLSQL语句简介及使用方法的举例说明

    PL/SQL可以直接嵌入SQL语句,如SELECT、INSERT、UPDATE、DELETE等,用于对数据库进行操作。例如,以下是一个简单的插入语句: ```sql BEGIN INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2'...

Global site tag (gtag.js) - Google Analytics