有关存储过程效率方面的问题?

westbulls 2003-03-06 04:13:50
现在有以下问题:假如我有七个报表,它们有共同的输入参数,如果我将它们的执行过程放在同一个存储过程中,并将每个报表的名称作为其输入参数,我不知道这种方式与我写七个存储过程分别调用后返回结果到前台,从效率上看差别大吗?因为毕竟写一个存储过程比写七个维护起来要方便多。请有经验的老大指点一二,多谢啦!
ex:
if @name=''
begin
.....
end
if @name=''
begin
....
end
....
go

...全文
28 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
linghuchonglzq2000 2003-03-07
  • 打赏
  • 举报
回复
学习
hillhx 2003-03-07
  • 打赏
  • 举报
回复
给我感觉没什么问题速度应该不会比7个分别调用慢很多,因为真正的速度慢还是发生在执行SQL语句的过程中,如果你有个很大的存储过程,但却只有一句SQL被执行,那也会很快,但有一个问题,就是存储过程之间可能有事务的互相锁定问题,如果有很大的并发问题,最好分成7个
angle1219 2003-03-07
  • 打赏
  • 举报
回复
没用过这种方法,好象很神奇,学习!!
p2bl 2003-03-06
  • 打赏
  • 举报
回复
补充;调用编号为1的存储过程可以不用加上";1"
p2bl 2003-03-06
  • 打赏
  • 举报
回复
你那样的存储过程会导致重新编译
写8个存储过程,但是都叫同一个名字!
你仔细看看bol上create proc 语法,每个相同名字的存储过程可以有一组比如你的例子可以这样:
create proc up_do
;1
@tableName
AS
if(@tableName='')
begin
exec up_do ;2
end
if(@tableName='')
begin
exec up_do ;3
.......
go

create proc up_do ;2
AS
........
go

create proc up_do ;3
AS
........
go

这样的好处是你原来写的程序不用改,而且有不会导致存储过程的重新编译



end
end
pengdali 2003-03-06
  • 打赏
  • 举报
回复
create proc 名
@表名 varchar(100),
@其他参数 varchar(100)
as
exec('select * from '+@表名+' where 条件='''+@其他参数+'''')
mymmsc 2003-03-06
  • 打赏
  • 举报
回复
我来学习一下。
westbulls 2003-03-06
  • 打赏
  • 举报
回复
to w_rose:
1.我的报表有共同的输入参数,而整个数据库的存储过程的输入参数是各不相同的,所以不存在合成的必要。
2.之所以合成的原因是,我想让前台的调用更灵活一点,因为如果用同一个存储过程,那么我的调用语句就是一样的,这样,如果用户的报表有了调整,我只用更改后台的存储过程就可以了。(主要是我做了一个能用的报表输出系统,所以只要数据源改变了,报表是不需要重新更改的。)
3.我对sql server对存储过程的编译只是略有了解,请详细说明不能这样做的技术依据。
w_rose 2003-03-06
  • 打赏
  • 举报
回复
你是否尝试过将整个数据库的全部存储过程都从同一个接口调用?

这样的效率,丢了西瓜捡了芝麻,真正让你感叹自己没有效率的危机随之而来,何必呢!

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧