- 浏览: 97528 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (133)
- jQuery (11)
- XML (3)
- 组件 (1)
- JAVA (20)
- WEB (3)
- SPRING (6)
- HIBERNATE (5)
- AJAX (2)
- JS (1)
- JAVA webservice (1)
- Ditu (1)
- WEBSITE (1)
- HIBERNATE ANNOTATION (1)
- 排序 (1)
- TCP_NODELAY (1)
- ConvertUtils (1)
- Logistics (1)
- SQL SERVER 中identity (4)
- sql server (35)
- MYSQL (1)
- Eclipse (6)
- ORACLE (6)
- FLEX (4)
- notepad++ (0)
- UNION ALL (1)
- JUnit (3)
- SQL 异常处理 (1)
- @@trancount (1)
- IOS (1)
- ORA-02266 (1)
- REMOTE DESKTOP (0)
- HTML 优化 (1)
- CRLF (1)
- SQL Server Sequence (1)
最新评论
-
zjuttsw:
看的舒服
重要的hashcode equals转载
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中使用的,可以在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在下次执行时就不用再编译了。
发表评论
-
WITH (NOLOCK)
2014-09-28 11:56 573http://www.cnblogs.com/henw/arc ... -
SQL Server Profiler使用方法
2014-05-21 16:55 605http://lyt7599.blog.163.com/blo ... -
SQL Server Error Message
2014-05-20 20:20 1290http://www.sql-server-helper.co ... -
SQL锁的概述
2014-05-16 14:39 402http://blog.csdn.net/htl258/art ... -
SET...
2013-12-31 11:16 314http://msdn.microsoft.com/en-us ... -
DATE
2013-12-30 15:23 441http://blog.csdn.net/dba_huangz ... -
DATE AND TIME
2013-12-30 14:22 545SELECT (CAST((SELECT SUBSTRING( ... -
Microsoft SQL Server, Error:9002
2013-09-25 17:48 1026一般在建立一个database之后,就应该手动设置其日志的增长 ... -
SQL 2005 with(nolock)详解
2013-08-26 15:46 576http://hi.baidu.com/gabriel/ite ... -
EXISTS AND NOT EXISTS
2013-07-16 14:51 456EXISTS或者NOT EXISTS是把主查询的字段传到后边的 ... -
is invalid in the select list because it is not contained in either an aggregate
2013-07-11 10:37 933当select 语句块中出现function与常列时,需要在w ... -
A interesting article for printing statement in sql
2013-07-09 11:57 420http://bytes.com/topic/sql-serv ... -
Good net website blog for Database
2013-07-09 11:53 765http://www.bluegecko.net/mysql/ ... -
how to search a function or sto in database
2013-07-08 14:02 674SELECT * FROM sysobjects WHERE ... -
Good SQL WEBSITE 细说Sql Server中的视图(上)(更新)
2013-07-08 11:38 508http://www.cnblogs.com/xbf321/a ... -
SQLServer : EXEC和sp_executesql的区别
2013-07-08 11:36 538http://www.cnblogs.com/xbf321/a ... -
Search for a stored procedure
2013-07-08 11:27 624September 3, 2007 by Pinal Dave ... -
TRUNCATE TABLE
2013-06-27 10:43 467默认情况下,IDENTITY_INSER就是off 这种情况下 ... -
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
2013-06-18 14:08 543http://www.cnblogs.com/freshman ... -
安装了SQL以后,编写SQL语句没有提示
2013-06-18 09:55 551安装了SQL以后,编写SQL语句没有提示解决办法: 工具— ...
相关推荐
通过以上两个示例可以看出,在Oracle存储过程中实现动态SQL语句的关键在于利用`EXECUTE IMMEDIATE`动态执行SQL语句以及通过创建包的方式来实现更为复杂的动态数据处理逻辑。这两种方法不仅提高了代码的灵活性,还...
5. **可以在SELECT语句中使用**:函数可以直接嵌入到`SELECT`语句中作为表达式的一部分,而存储过程则不能这样使用。 6. **调用方式**:通常直接在SQL查询中作为函数调用,如`SELECT 函数名称(参数列表) FROM 表名`...
在SQL Server中,存储过程和函数是数据库管理与开发中的重要组成部分,它们为数据库操作提供了高效、可重用和安全的途径。以下是关于SQL Server存储过程和函数的一些常用知识点: 1. **存储过程(Stored Procedures...
在Oracle中,可以使用`EXECUTE`语句来调用存储过程和函数,也可以在SQL语句中直接嵌入函数。参数传递给这些程序单元,可以是IN(输入)、OUT(输出)或IN OUT(输入输出)类型。 六、游标和循环 游标是PL/SQL中处理...
函数与存储过程类似,也是预定义的代码块,但主要区别在于函数必须返回一个值,而存储过程可能不返回任何值。SQL函数可以是内置的(如计算平均值AVG或求和SUM),也可以是用户自定义的(UDF,User-Defined Function...
### 在INFORMIX-ESQL/C中嵌入SQL语句 #### 一、概述 在进行数据库应用程序开发的过程中,开发者经常需要将SQL语句嵌入到高级编程语言中执行数据库操作。INFORMIX-ESQL/C就是一种允许开发者在C语言环境中直接使用...
6. **动态SQL**:存储过程中可以嵌入动态SQL语句,根据需要在运行时生成并执行SQL。 7. **返回值**:存储过程可以设置返回值,用`RETURN`语句传递结果给调用者。 **SQL触发器**: 1. **定义**:触发器是一种特殊的...
函数在SQL查询中可以直接嵌入使用,而存储过程通常需要通过调用执行。 【使用提示】 - 当存储过程中没有SQL语句时,最好设置`NO SQL`,以告诉系统该过程不涉及数据操作,提高效率。 - 存储过程的安全性可以通过`...
在VC++中嵌入SQL是一种常见的数据库操作方式,允许开发者在C++代码中直接使用SQL语句来与数据库进行交互。这种方式使得程序可以直接处理数据库任务,如插入、删除和查询等,而无需通过额外的API调用。嵌入SQL语言的...
因此,需要使用EXEC()函数或sp_executesql存储过程来执行这些动态构建的SQL语句。 6. **错误处理和安全性**:在执行动态SQL时,必须考虑SQL注入的风险,并进行适当的错误处理。此外,存储过程应当设计有合理的错误...
PL/SQL 代码块可以嵌入到 SQL 语句中,或者作为独立的存储过程、函数或触发器存在。 5. **动手实践** - 首先,了解 Oracle 的基本安装和常用命令至关重要。Oracle 提供不同版本以满足不同需求,例如企业版、标准版...
函数与存储过程类似,也是预编译的代码块,但它们的主要区别在于函数必须返回一个值,而存储过程可能不返回任何值。函数可以作为查询的一部分被嵌入到SQL语句中,提高了代码的可读性和效率。比如,你可以创建自定义...
存储过程是预编译的SQL语句集合,可以在数据库中被保存并重复调用。它们可以接受参数、执行一系列复杂的操作,并返回结果。存储过程的优势在于减少网络传输,提高性能,同时还能增强安全性,因为它们可以设置权限...
- 函数与存储过程相似,也是预编译的代码块,但它们的主要区别在于函数必须有返回值。函数可以接收输入参数,并根据这些参数产生一个或多个输出结果。 - 在SQL Server中,函数分为标量函数(返回单一值)、内嵌表...
嵌入式SQL语句在VC++数据库系统开发中扮演着重要的角色,它允许开发者将SQL命令直接嵌入到C++程序中,实现高效且灵活的数据处理。本文将深入探讨嵌入式SQL的概念、构建方法以及在VC++环境下的具体应用。 嵌入式SQL...
- 非确定性函数不能在函数中使用,但在存储过程中可以。 - 存储过程通常单独执行,而函数可以嵌入到查询语句中。 2. 创建存储过程和函数的示例: - `getnamebysno` 是一个存储过程,用于根据学号查询学生姓名。...
6. **视图与存储过程**:视图提供了一种虚拟表的视角,存储过程则可以封装一系列的SQL操作,提高代码的重用性和安全性。书中将阐述这两者的创建、修改和使用方法。 7. **索引与优化**:索引能显著提升查询性能,书...
存储过程是一组预先编译的SQL语句,存储在数据库中,可以按需调用执行。它们允许开发者将复杂的业务逻辑封装起来,减少网络通信,提高效率。在Oracle中,创建存储过程使用`CREATE PROCEDURE`语句,调用则通过`...
8. **动态SQL**:在某些场景下,SQL语句的嵌套还包括动态构建SQL字符串,根据运行时的条件生成不同的查询,常见于存储过程和函数中。 以上是关于SQL语句嵌套的一些主要知识点。在实际应用中,理解并熟练掌握这些...
PL/SQL可以直接嵌入SQL语句,如SELECT、INSERT、UPDATE、DELETE等,用于对数据库进行操作。例如,以下是一个简单的插入语句: ```sql BEGIN INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2'...