[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 数据库子站

实用技巧:创建你自己的系统存储过程

作者: 唐小若 翻译,  出处:IT专家网, 责任编辑: 包春林, 
2008-11-20 04:00
  微软为它们的系统表提供了一组很好的基本查询。然而,其中某些存储过程缺乏我感兴趣的其它一些信息,并且我发现自己经常执行一些查询来获得这些额外的信息。有没有一种方法可以用来执行这些查询,例如系统存储过程?

  通过在一个SQL Server主数据库中创建一个带有sp_前缀的存储过程,你可以充分利用引擎存储过程名称解析算法的优势。如果一个存储过程以sp_开头,那么这个引擎将会在检查当前数据库和属主之前先查找主数据库。顺便说一句,这个名称解析正好是你从来不把自己应用数据库存储过程的前缀命名为sp_,因为每次你尝试着执行这些程序时,你都会不断地产生与不必要查询和缓存缺失有关的费用。

  当从主数据库中运行一个带着sp_前缀的程序时,有一些细微的地方需要注意,比如用哪一个数据库上下文环境,什么影响了数据所返回的。

  请看下面的例子:

  

      USE MASTER

  GO

  IF OBJECT_ID('SP_GETOBJECTS') IS NOT NULL

  DROP PROCEDURE DBO.sp_GETOBJECTS

  GO

  CREATE PROCEDURE DBO.sp_GETOBJECTS

  AS

  SET NOCOUNT ON

  SELECT DB_NAME()

  -- ANSI view

  SELECT *

  FROM INFORMATION_SCHEMA.TABLES

  WHERE TABLE_NAME = 'Employee'

  -- SQL Server 2005 table

  SELECT *

  FROM sys.objects

  WHERE NAME = 'Employee'

  -- SQL Server 2000 table

  SELECT *

  FROM sysobjects

  WHERE NAME = 'Employee'

  SELECT TOP 1 *

  FROM HumanResources.Employee

  GO

  USE AdventureWorks

  GO

  EXEC sp_GETOBJECTS

  GO

共3页。 1 2 3 下一页 末页
  • 本文关键词:

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅