什么时候应该使用存储过程?什么时候应该使用用户自定义函数?什么时候应该使用视图?什么时候应该直接使用Transact-SQL 语句??
谢谢大家。
15 个解决方案
#1
.......
#2
只有打好基础,不断练习,不断提高,才能做到随心所欲,应需而用.
#3
通常使用存储过程就差不多够了。
写涵数是为了重复,递归调用。
而视图,我觉得是需要的结果表是由很多表,很多字段关联得到的话,那就用视图。
其实用视图来设计结果表很不错,可以很容易的关联表,加别名,等等,不容易错,不会写一长串SQL不知道怎么修改。
另外我们现在跨服务器访问表,也得用视图。
写涵数是为了重复,递归调用。
而视图,我觉得是需要的结果表是由很多表,很多字段关联得到的话,那就用视图。
其实用视图来设计结果表很不错,可以很容易的关联表,加别名,等等,不容易错,不会写一长串SQL不知道怎么修改。
另外我们现在跨服务器访问表,也得用视图。
#4
其实这个没有硬性的规定,能参照的标准就是你写的东西要实现什么功能,需要注意哪些方面的因素,再决定用什么方式来实现!
具体就是性能,效率,可重复利用性,安全,维护这个方面来抉择!所以打好基础很重要!
具体就是性能,效率,可重复利用性,安全,维护这个方面来抉择!所以打好基础很重要!
#5
直接查询的话,用Transact-SQL 语句就行了
视图其实就是已经写好的Transact-SQL 语句,什么时候用得根据你得需要,如果你需要连接的表比较的多,字段也比较多的话,可以考虑把它们连接好作为一个视图,下次查询时直接调用此视图就行了
用户自定义函数,可以看成一个普通函数,可以在Sql语句里面调用它们,具体什么时候使用根据自己需求而定,此非一句话就能讲清的。
存储过程主要是在你处理复杂逻辑时用的比较多,因为已经被数据库编译过了,所以调用它时比较快
总之,这些东西都非常基本,建议你多看看书,联系下就OK了
#6
函数和存储过程基本上类似都是一段代码实现某个功能,不通的是函数必须要有返回值,而存储过程就不要。
视图是为了避免重复书冗长写复杂的查询语句而写成视图。
对于不复杂的语句就直接写sql语句了。
#7
什么时候应该使用存储过程?
个人认为添加、更新、删除、查询都可以用存储过程。
什么时候应该使用用户自定义函数?
尽量避免使用,数据量大时,自定义函数会很影响效率。
如果一定要使用,对数据分页后再用自定义函数处理。
什么时候应该使用视图?
由多表交叉取出来了常用的数据集。
什么时候应该直接使用Transact-SQL 语句??
没有复杂关系的简单查询。
个人认为添加、更新、删除、查询都可以用存储过程。
什么时候应该使用用户自定义函数?
尽量避免使用,数据量大时,自定义函数会很影响效率。
如果一定要使用,对数据分页后再用自定义函数处理。
什么时候应该使用视图?
由多表交叉取出来了常用的数据集。
什么时候应该直接使用Transact-SQL 语句??
没有复杂关系的简单查询。
#8
当需要对某一个字段进行处理的时候,可以考虑使用函数,然后进行调用
#9
1,2问题是一组,3,4问题是另外一组。并不是4个问题一起比较。
什么时候应该使用存储过程?
处理复杂业务逻辑,包装一个功能模块
结果集可被业务层直接获得
什么时候应该使用用户自定义函数?
根据条件返回一个值或结果集,以供存储过程调用
重用性很高(比如字符串拆分或合并函数,汉字转简拼函数)
什么时候应该使用视图?
关联表太多
关联条件单纯
结果集重用性高
什么时候应该直接使用Transact-SQL 语句??
效率需求高
条件复杂
无太大重用性
#10
什么时候应该使用存储过程?
处理复杂业务逻辑,包装一个功能模块
结果集可被业务层直接获得
什么时候应该使用用户自定义函数?
根据条件返回一个值或结果集,以供存储过程调用
重用性很高(比如字符串拆分或合并函数,汉字转简拼函数)
什么时候应该使用视图?
关联表太多
关联条件单纯
结果集重用性高
什么时候应该直接使用Transact-SQL 语句??
效率需求高
条件复杂
无太大重用性
处理复杂业务逻辑,包装一个功能模块
结果集可被业务层直接获得
什么时候应该使用用户自定义函数?
根据条件返回一个值或结果集,以供存储过程调用
重用性很高(比如字符串拆分或合并函数,汉字转简拼函数)
什么时候应该使用视图?
关联表太多
关联条件单纯
结果集重用性高
什么时候应该直接使用Transact-SQL 语句??
效率需求高
条件复杂
无太大重用性
#11
添加、更新、删除操作涉及到多个表同时进行时使用存储过程;很少使用用户自定义函数;查询使用表较多罗列字段多时使用视图方便不一出错;简单查询直接用T_SQL
#12
頂~
#13
http://topic.csdn.net/t/20051213/08/4455348.html
1 楼aw511(点点星灯)回复于 2005-12-13 08:50:35 得分 30
存储过程:
存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:
1、可以在单个存储过程中执行一系列 SQL 语句。
2、可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
3、存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。
用户定义函数:
Microsoft SQL Server 2000 允许创建用户定义函数。与任何函数一样,用户定义函数是可返回值的例程。根据所返回值的类型,每个用户定义函数可分成以下三个类别:
1、返回可更新数据表的函数
如果用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表格格式结果也可以更新。
2、返回不可更新数据表的函数
如果用户定义函数包含不止一个 SELECT 语句,或包含一个不可更新的 SELECT 语句,则该函数返回的表格格式结果也不可更新。
3、返回标量值的函数
用户定义函数可以返回标量值
1 楼aw511(点点星灯)回复于 2005-12-13 08:50:35 得分 30
存储过程:
存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:
1、可以在单个存储过程中执行一系列 SQL 语句。
2、可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
3、存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。
用户定义函数:
Microsoft SQL Server 2000 允许创建用户定义函数。与任何函数一样,用户定义函数是可返回值的例程。根据所返回值的类型,每个用户定义函数可分成以下三个类别:
1、返回可更新数据表的函数
如果用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表格格式结果也可以更新。
2、返回不可更新数据表的函数
如果用户定义函数包含不止一个 SELECT 语句,或包含一个不可更新的 SELECT 语句,则该函数返回的表格格式结果也不可更新。
3、返回标量值的函数
用户定义函数可以返回标量值
#14
aw511(点点星灯)回复于 2005-12-13 08:50:51 得分 0
存储进程 自定义函数
功能强大,先至少 诸多限制,有许多语句不能使用,许多功能不能实现
不能直接引用返回值 可以直接引用返回值
用select语句返回记录集 用表变量返回记录集
...
...(期待高手)
总之,一个是过程,一个是函数。
aw511(点点星灯)回复于 2005-12-13 08:54:10 得分 10
总结:
第一:存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。
第二:存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
第三:存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
第四:存储过程主要是在服务器上运行,减少对客户机的压力。
第五:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
第六:存储过程可以在单个存储过程中执行一系列 SQL 语句。
第七:存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
存储进程 自定义函数
功能强大,先至少 诸多限制,有许多语句不能使用,许多功能不能实现
不能直接引用返回值 可以直接引用返回值
用select语句返回记录集 用表变量返回记录集
...
...(期待高手)
总之,一个是过程,一个是函数。
aw511(点点星灯)回复于 2005-12-13 08:54:10 得分 10
总结:
第一:存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。
第二:存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
第三:存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
第四:存储过程主要是在服务器上运行,减少对客户机的压力。
第五:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
第六:存储过程可以在单个存储过程中执行一系列 SQL 语句。
第七:存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
#15
wangtiecheng(不知不为过,不学就是错!)回复于 2005-12-13 12:45:21 得分 10
存储过程可以用临时表,函数不能用临时表
存储过程可以使用Update,函数不能使用Update
存储过程可以用Getdate()等函数,函数不能使用Getdate()这些函数
存储过程可以用临时表,函数不能用临时表
存储过程可以使用Update,函数不能使用Update
存储过程可以用Getdate()等函数,函数不能使用Getdate()这些函数
#1
.......
#2
只有打好基础,不断练习,不断提高,才能做到随心所欲,应需而用.
#3
通常使用存储过程就差不多够了。
写涵数是为了重复,递归调用。
而视图,我觉得是需要的结果表是由很多表,很多字段关联得到的话,那就用视图。
其实用视图来设计结果表很不错,可以很容易的关联表,加别名,等等,不容易错,不会写一长串SQL不知道怎么修改。
另外我们现在跨服务器访问表,也得用视图。
写涵数是为了重复,递归调用。
而视图,我觉得是需要的结果表是由很多表,很多字段关联得到的话,那就用视图。
其实用视图来设计结果表很不错,可以很容易的关联表,加别名,等等,不容易错,不会写一长串SQL不知道怎么修改。
另外我们现在跨服务器访问表,也得用视图。
#4
其实这个没有硬性的规定,能参照的标准就是你写的东西要实现什么功能,需要注意哪些方面的因素,再决定用什么方式来实现!
具体就是性能,效率,可重复利用性,安全,维护这个方面来抉择!所以打好基础很重要!
具体就是性能,效率,可重复利用性,安全,维护这个方面来抉择!所以打好基础很重要!
#5
直接查询的话,用Transact-SQL 语句就行了
视图其实就是已经写好的Transact-SQL 语句,什么时候用得根据你得需要,如果你需要连接的表比较的多,字段也比较多的话,可以考虑把它们连接好作为一个视图,下次查询时直接调用此视图就行了
用户自定义函数,可以看成一个普通函数,可以在Sql语句里面调用它们,具体什么时候使用根据自己需求而定,此非一句话就能讲清的。
存储过程主要是在你处理复杂逻辑时用的比较多,因为已经被数据库编译过了,所以调用它时比较快
总之,这些东西都非常基本,建议你多看看书,联系下就OK了
#6
函数和存储过程基本上类似都是一段代码实现某个功能,不通的是函数必须要有返回值,而存储过程就不要。
视图是为了避免重复书冗长写复杂的查询语句而写成视图。
对于不复杂的语句就直接写sql语句了。
#7
什么时候应该使用存储过程?
个人认为添加、更新、删除、查询都可以用存储过程。
什么时候应该使用用户自定义函数?
尽量避免使用,数据量大时,自定义函数会很影响效率。
如果一定要使用,对数据分页后再用自定义函数处理。
什么时候应该使用视图?
由多表交叉取出来了常用的数据集。
什么时候应该直接使用Transact-SQL 语句??
没有复杂关系的简单查询。
个人认为添加、更新、删除、查询都可以用存储过程。
什么时候应该使用用户自定义函数?
尽量避免使用,数据量大时,自定义函数会很影响效率。
如果一定要使用,对数据分页后再用自定义函数处理。
什么时候应该使用视图?
由多表交叉取出来了常用的数据集。
什么时候应该直接使用Transact-SQL 语句??
没有复杂关系的简单查询。
#8
当需要对某一个字段进行处理的时候,可以考虑使用函数,然后进行调用
#9
1,2问题是一组,3,4问题是另外一组。并不是4个问题一起比较。
什么时候应该使用存储过程?
处理复杂业务逻辑,包装一个功能模块
结果集可被业务层直接获得
什么时候应该使用用户自定义函数?
根据条件返回一个值或结果集,以供存储过程调用
重用性很高(比如字符串拆分或合并函数,汉字转简拼函数)
什么时候应该使用视图?
关联表太多
关联条件单纯
结果集重用性高
什么时候应该直接使用Transact-SQL 语句??
效率需求高
条件复杂
无太大重用性
#10
什么时候应该使用存储过程?
处理复杂业务逻辑,包装一个功能模块
结果集可被业务层直接获得
什么时候应该使用用户自定义函数?
根据条件返回一个值或结果集,以供存储过程调用
重用性很高(比如字符串拆分或合并函数,汉字转简拼函数)
什么时候应该使用视图?
关联表太多
关联条件单纯
结果集重用性高
什么时候应该直接使用Transact-SQL 语句??
效率需求高
条件复杂
无太大重用性
处理复杂业务逻辑,包装一个功能模块
结果集可被业务层直接获得
什么时候应该使用用户自定义函数?
根据条件返回一个值或结果集,以供存储过程调用
重用性很高(比如字符串拆分或合并函数,汉字转简拼函数)
什么时候应该使用视图?
关联表太多
关联条件单纯
结果集重用性高
什么时候应该直接使用Transact-SQL 语句??
效率需求高
条件复杂
无太大重用性
#11
添加、更新、删除操作涉及到多个表同时进行时使用存储过程;很少使用用户自定义函数;查询使用表较多罗列字段多时使用视图方便不一出错;简单查询直接用T_SQL
#12
頂~
#13
http://topic.csdn.net/t/20051213/08/4455348.html
1 楼aw511(点点星灯)回复于 2005-12-13 08:50:35 得分 30
存储过程:
存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:
1、可以在单个存储过程中执行一系列 SQL 语句。
2、可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
3、存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。
用户定义函数:
Microsoft SQL Server 2000 允许创建用户定义函数。与任何函数一样,用户定义函数是可返回值的例程。根据所返回值的类型,每个用户定义函数可分成以下三个类别:
1、返回可更新数据表的函数
如果用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表格格式结果也可以更新。
2、返回不可更新数据表的函数
如果用户定义函数包含不止一个 SELECT 语句,或包含一个不可更新的 SELECT 语句,则该函数返回的表格格式结果也不可更新。
3、返回标量值的函数
用户定义函数可以返回标量值
1 楼aw511(点点星灯)回复于 2005-12-13 08:50:35 得分 30
存储过程:
存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:
1、可以在单个存储过程中执行一系列 SQL 语句。
2、可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
3、存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。
用户定义函数:
Microsoft SQL Server 2000 允许创建用户定义函数。与任何函数一样,用户定义函数是可返回值的例程。根据所返回值的类型,每个用户定义函数可分成以下三个类别:
1、返回可更新数据表的函数
如果用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表格格式结果也可以更新。
2、返回不可更新数据表的函数
如果用户定义函数包含不止一个 SELECT 语句,或包含一个不可更新的 SELECT 语句,则该函数返回的表格格式结果也不可更新。
3、返回标量值的函数
用户定义函数可以返回标量值
#14
aw511(点点星灯)回复于 2005-12-13 08:50:51 得分 0
存储进程 自定义函数
功能强大,先至少 诸多限制,有许多语句不能使用,许多功能不能实现
不能直接引用返回值 可以直接引用返回值
用select语句返回记录集 用表变量返回记录集
...
...(期待高手)
总之,一个是过程,一个是函数。
aw511(点点星灯)回复于 2005-12-13 08:54:10 得分 10
总结:
第一:存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。
第二:存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
第三:存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
第四:存储过程主要是在服务器上运行,减少对客户机的压力。
第五:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
第六:存储过程可以在单个存储过程中执行一系列 SQL 语句。
第七:存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
存储进程 自定义函数
功能强大,先至少 诸多限制,有许多语句不能使用,许多功能不能实现
不能直接引用返回值 可以直接引用返回值
用select语句返回记录集 用表变量返回记录集
...
...(期待高手)
总之,一个是过程,一个是函数。
aw511(点点星灯)回复于 2005-12-13 08:54:10 得分 10
总结:
第一:存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。
第二:存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
第三:存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
第四:存储过程主要是在服务器上运行,减少对客户机的压力。
第五:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
第六:存储过程可以在单个存储过程中执行一系列 SQL 语句。
第七:存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
#15
wangtiecheng(不知不为过,不学就是错!)回复于 2005-12-13 12:45:21 得分 10
存储过程可以用临时表,函数不能用临时表
存储过程可以使用Update,函数不能使用Update
存储过程可以用Getdate()等函数,函数不能使用Getdate()这些函数
存储过程可以用临时表,函数不能用临时表
存储过程可以使用Update,函数不能使用Update
存储过程可以用Getdate()等函数,函数不能使用Getdate()这些函数