sql server查询可编程对象定义的方式对比以及整合
| 对象类型描述 | 对象类型简写 |
sys.sp_helptext
|
sys.sql_modules |
sys.system_sql_modules
|
sys.all_sql_modules
|
object_definition |
|
CHECK_CONSTRAINT
|
C
|
支持 | 不支持 |
不支持
|
不支持
|
支持
|
|
DEFAULT_CONSTRAINT(contraint,stand-alone)
|
D
|
支持 | 支持 |
不支持
|
支持 |
支持
|
|
SQL_SCALAR_FUNCTION
|
FN
|
支持
|
支持 |
支持
|
支持
|
支持
|
|
SQL_INLINE_TABLE_VALUED_FUNCTION
|
IF
|
支持
|
支持
|
支持 |
支持
|
支持
|
|
SQL_STORED_PROCEDURE
|
P
|
支持
|
支持 | 支持 |
支持
|
支持
|
|
RULE(old-style,stand-alone)
|
R |
支持
|
支持
|
不支持
|
支持 |
支持
|
|
REPLICATION FILTER PROCEDURE
|
RF |
支持
|
支持
|
支持
|
支持 |
支持
|
|
SQL_TABLE_VALUED_FUNCTION
|
TF
|
支持
|
支持
|
支持
|
支持
|
支持
|
|
SQL_TRIGGER
|
TR
|
支持(除数据库DDL触发器和服务器触发器外)
|
支持(除服务器触发器外)
|
不支持
|
支持(除服务器触发器外)
|
支持(除服务器触发器外)
|
|
USER_TABLE
|
U
computed_column
|
支持 |
不支持
|
不支持
|
不支持 |
不支持
|
|
VIEW
|
V
|
支持 |
支持
|
支持
|
支持
|
支持
|
注意:
IF OBJECT_ID(N'[dbo].[usp_helptext2]', 'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[usp_helptext2];
END
GO --==================================
-- 功能: 查看可编程对象定义
-- 说明: 支持用户定义类型,可以运行于SQL Server 2005+
-- 创建: yyyy-MM-dd hh:mm-hh:mm XXX 创建内容描述
-- 修改: yyyy-MM-dd hh:mm-hh:mm XXX 修改内容描述
--==================================
CREATE PROCEDURE [dbo].[usp_helptext2]
(
@nvcObjectName AS NVARCHAR(776) -- 对象名称,可以支持的对象类型为(C、D、FN、IF、P、R、RF、TF、TR、U、V)
,@nvcComputedColumnName AS NVARCHAR(128) = NULL -- 计算列名称(如果@nvcObjectName的对象类型为U,则该参数表示计算列名称)
)
AS
BEGIN
SET NOCOUNT ON; SET @nvcObjectName = ISNULL(@nvcObjectName, N'');
IF (@nvcObjectName = N'')
BEGIN
RAISERROR(16902, -1, -1,N'usp_helptext2', N'@nvcObjectName');
RETURN(1);
END SET @nvcComputedColumnName = ISNULL(@nvcComputedColumnName, N''); DECLARE @tntRetVal AS TINYINT;
SET @tntRetVal = 0; DECLARE @tblObjDef AS TABLE (
[Text] NVARCHAR(1000) NULL
); DECLARE
@intObjectID AS INT
,@chaType AS CHAR(2)
,@nvcText AS NVARCHAR(MAX);
SELECT
@intObjectID = 0
,@chaType = ''
,@nvcText = N'';
SELECT
@intObjectID = [object_id]
,@chaType = [type]
FROM [sys].[all_objects]
WHERE
[type] IN ('C', 'D', 'FN', 'IF', 'P', 'R', 'RF', 'TF', 'TR', 'U', 'V')
AND [name] = PARSENAME(@nvcObjectName, 1); IF (@nvcComputedColumnName > N'') -- 获取计算列定义
BEGIN
IF (@chaType NOT IN ('S', 'U', 'TF'))
BEGIN
RAISERROR(15218, -1, -1, @nvcObjectName);
RETURN(1);
END INSERT INTO @tblObjDef ([Text])
EXEC [sys].[sp_helptext]
@objname = @nvcObjectName -- nvarchar(776)
,@columnname = @nvcComputedColumnName -- sysname IF(@@ROWCOUNT = 0)
BEGIN
SET @tntRetVal = 1;
END SELECT
@nvcText = ISNULL([Text], N'')
FROM @tblObjDef;
END
ELSE IF (@intObjectID <> 0) -- 获取除计算列和服务器触发器以外的所有对象类型的定义
BEGIN
SET @nvcText = OBJECT_DEFINITION(@intObjectID); IF(@@ROWCOUNT = 0)
BEGIN
SET @tntRetVal = 1;
END
END
ELSE IF (@intObjectID = 0) -- 尝试获取服务器触发器定义
BEGIN
SELECT
@nvcText = T1.[definition]
FROM [sys].[server_sql_modules] AS T1
INNER JOIN [sys].[server_triggers] AS T2
ON [T1].[object_id] = [T2].[object_id]
WHERE T2.[name] = @nvcObjectName; IF(@@ROWCOUNT = 0)
BEGIN
SET @tntRetVal = 1;
END
END SELECT
@nvcText AS [Text]; RETURN(@tntRetVal);
END
GO












sql server查询可编程对象定义的方式对比以及整合的更多相关文章
- SQL Server 查询性能优化 相关文章
来自: SQL Server 查询性能优化——堆表.碎片与索引(一) SQL Server 查询性能优化——堆表.碎片与索引(二) SQL Server 查询性能优化——覆盖索引(一) SQL Ser ...
- Sql Server查询性能优化之走出索引的误区
据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会.也什么没有必要去关心.了解索引,实在哪天某个查询太慢了找到查询条件建个索引就ok,哪天又有个查询慢了,再建立个索引就是, ...
- SQL Server 查询分析器提供的所有键盘快捷方式(转)
下表列出 SQL Server 查询分析器提供的所有键盘快捷方式. 活动 快捷方式 书签:清除所有书签. CTRL-SHIFT-F2 书签:插入或删除书签(切换). CTRL+F2 书签:移动到下一个 ...
- 如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?
如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何 ...
- SQL Server 查询分析器键盘快捷方式
下表列出 SQL Server 查询分析器提供的所有键盘快捷方式. 活动 快捷方式 书签:清除所有书签. CTRL-SHIFT-F2 书签:插入或删除书签(切换). CTRL+F2 书签:移动到下一个 ...
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...
- 用SQL Server查询所有数据并显示
利用SQL Server查询数据,并把所有数据显示在页面上. "%> <%@page import="jdbc.sqlServer"%> <%@p ...
- SQL Server查询性能
sql server常用语句总结 http://ace105.blog.51cto.com/639741/792519 SQL Server 性能调优(一)--从等待状态判断系统资源瓶颈 ...
- [转] 利用SET STATISTICS IO和SET STATISTICS TIME 优化SQL Server查询性能
首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...
随机推荐
- HTML 事件(三) 事件流与事件委托
本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...
- 前端学HTTP之内容协商
前面的话 一个URL常常需要代表若干不同的资源.例如那种需要以多种语言提供其内容的网站站点.如果某个站点有说法语的和说英语的两种用户,它可能想用这两种语言提供网站站点信息.理想情况下,服务器应当向英语 ...
- 博客使用BOS上传图片
1.博客平台的选定 从大学开始做个人主页算起,最开始是使用html,CSSS写简单的页面,后面大学毕业之后接触到了WordPress,就开始用WordPress搭建网站.现在还维护着一个农村网站.ht ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
- interpreter(解释器模式)
一.引子 其实没有什么好的例子引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中:在实际应用中,我们可能很少碰到去构造一个语言的文法的情况. 虽然你几乎用 ...
- “风投云涌”:那些被资本看中的IT企业的风光与辛酸
进入七月份以来,纷享销客获得D轮融资1亿美元,撼动业界,资本与IT联姻令一部分创业者眼红的同时,没有人注意到背后的风险. 科技与资本的结合,是当今经济社会前行的宏大主题.相关统计显示,软件行 ...
- 排序算法----基数排序(RadixSort(L))单链表智能版本
转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...
- Java中的进程与线程(总结篇)
详细文档: Java中的进程与线程.rar 474KB 1/7/2017 6:21:15 PM 概述: 几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进 ...
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...
- ASP.NET Core 在 JSON 文件中配置依赖注入
前言 在上一篇文章中写了如何在MVC中配置全局路由前缀,今天给大家介绍一下如何在在 json 文件中配置依赖注入. 在以前的 ASP.NET 4+ (MVC,Web Api,Owin,SingalR等 ...