日期:2014-05-19  浏览次数:20576 次

如何在当前数据库下调用与系统存储同名的存储过程?
--存储过程
create   proc   dbo.[sp_help]
as
select   1
go

--drop   proc   [sp_help]

--调用
exec   sp_help   与   exec   ams.dbo.sp_help   执行结果一样;   即结果执行的是系统存储过程sp_help.感觉很奇怪,允许我建立这样的对象,却不允许调用,抑或是我没找到调用的方法?

当然我只是在测试时随便起了这么个名字,实际中我的存储过程没有与系统存储过程同名的。

------解决方案--------------------
奇怪,事实上无法编辑这个过程的角本,
------解决方案--------------------
你够大胆的,我只知道最好不要以sp_ xp_开头,而且,若以sp_开头,会优先访问master数据库,而且我试过,新建的根本打不开,告诉损坏,在syscomments中没有记录.可能是系统不能完全关闭这项功能,又得保证系统存储过程优先访问之间不好平衡而留下的bug吧
------解决方案--------------------
存储过程的确可以跟系统存储过程一样
不过由于调用的时候是优先访问系统存储过程所有没办法取到你自己定义的存储过程

取存储过程名称的时候最好不要以sp_ xp_开头是为了怕今天的版本出现跟你现在的名称一样的存储过程,那样就会忽略掉你现有的存储过程

当然这也不是什么错误
就像你一个表里面有几条重复的记录
而你每次查询的时候用DISTINCT关键字忽略掉一样