iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >查询代码在哪个视图、存储过程、函数、触发中使用过
  • 557
分享到

查询代码在哪个视图、存储过程、函数、触发中使用过

查询代码在哪个视图存储过程函数触发中使用过 2020-10-22 09:10:01 557人浏览 无得
摘要

    工作中偶尔会出现:想用A数据表替换B数据表,然后把B数据表删除。但是,又不知道B数据表在哪个视图、存储过程、函数、触发器中使用过?     经过一番度娘,看到实现方法也不难,主要涉及两个系统表:sysobjects及syscomme

    工作中偶尔会出现:想用A数据表替换B数据表,然后把B数据表删除。但是,又不知道B数据表在哪个视图、存储过程、函数、触发器中使用过?

    经过一番度娘,看到实现方法也不难,主要涉及两个系统表:sysobjects及syscomments。

    1、先来复习一下sysobjects表结构。

列名

数据类型

描述

name

sysname

对象名。

id

int

对象标识号。

xtype

char(2)

对象类型。可以是下列对象类型中的一种: 

C = CHECK 约束

D = 默认值或 DEFAULT 约束

F = FOREIGN KEY 约束

L = 日志

FN = 标量函数 

IF = 内嵌表函数 

P = 存储过程 

PK = PRIMARY KEY 约束(类型是 K)

RF = 复制筛选存储过程

S = 系统表 

TF = 表函数 

TR = 触发器 

U = 用户表 

UQ = UNIQUE 约束(类型是 K)

V = 视图 

X = 扩展存储过程

uid

smallint

所有者对象的用户 ID。

info

smallint

保留。仅限内部使用。

status

int

保留。仅限内部使用。

base_schema_ ver

int

保留。仅限内部使用。

replinfo

int

保留。供复制使用。

parent_obj

int

父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。

crdate

datetime

对象的创建日期。

ftcatid

smallint

为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。

schema_ver

int

版本号,该版本号在每次表的架构更改时都增加。

stats_schema_ ver

int

保留。仅限内部使用。

type

char(2) 

对象类型。可以是下列值之一:

C = CHECK 约束

D = 默认值或 DEFAULT 约束

F = FOREIGN KEY 约束

FN = 标量函数

IF = 内嵌表函数

K = PRIMARY KEY 或 UNIQUE 约束

L = 日志

P = 存储过程

R = 规则

RF = 复制筛选存储过程

S = 系统表

TF = 表函数

TR = 触发器

U = 用户表

V = 视图

X = 扩展存储过程

userstat

smallint 

保留。

sysstat

smallint 

内部状态信息。

indexdel

smallint

保留。

refdate

datetime

留用。

version

int 

保留。

deltrig 

int 

保留。

instrig

int 

保留。

updtrig

int 

保留。

seltrig

int 

保留。

cateGory

int

用于发布、约束和标识。

cache

smallint 

保留。

    注:上表来源于:https://blog.csdn.net/xuchaofu/article/details/3458716

    2、顺便记录一下sysobjects的一些经典用法,比如说查表是否存在?

--方法1:
IF EXISTS (SELECT 1 FROM DBO.SYSOBJECTS WHERE ID=OBJECT_ID(N"[DBO].[表名]") AND OBJECTPROPERTY(ID, N"ISUSERTABLE")=1)
    DROP TABLE [DBO].[表名]

--方法2:
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE XTYPE="U" AND NAME="表名")
    DROP TABLE [DBO].[表名]

    3、言归正传,重点来了:比如查一个表如[RC_位数]在哪些代码中使用过?

SELECT A.NAME 来源名称,B.TEXT 代码内容,
    CASE
        WHEN A.XTYPE="V" THEN "视图"
        WHEN A.XTYPE="P" THEN "存储过程"
        WHEN A.XTYPE="FN" THEN "标量函数"
        WHEN A.XTYPE="TF" THEN "表函数"
        WHEN A.XTYPE="TR" THEN "触发器"
        ELSE A.XTYPE
    END 类型
FROM SYSOBJECTS A INNER JOIN SYSCOMMENTS B ON A.ID=B.ID
WHERE B.TEXT LIKE "%RC_位数%"
ORDER BY 类型

    结果如下:

    需要说明的是,假如代码如存储过程使用WITH ENCRYPTION等方式加密过时,是查不到结果的。因为加密过的内容,在syscomments中会显示为NULL。

--RC_COST_CO是加密过的存储过程
SELECT A.NAME 来源名称,B.TEXT 代码内容,
    CASE
        WHEN A.XTYPE="V" THEN "视图"
        WHEN A.XTYPE="P" THEN "存储过程"
        WHEN A.XTYPE="FN" THEN "标量函数"
        WHEN A.XTYPE="TF" THEN "表函数"
        WHEN A.XTYPE="TR" THEN "触发器"
        ELSE A.XTYPE
    END 类型
FROM SYSOBJECTS A INNER JOIN SYSCOMMENTS B ON A.ID=B.ID
WHERE A.NAME="RC_COST_CO"
ORDER BY 类型

    结果如下:

 

您可能感兴趣的文档:

--结束END--

本文标题: 查询代码在哪个视图、存储过程、函数、触发中使用过

本文链接: https://www.lsjlt.com/news/1889.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • sql中外码怎么设置
    sql 中外码设置步骤:确定父表和子表。在子表中创建外码列,引用父表主键。使用 foreign key 约束将外码列链接到父表主键。指定引用动作,以处理父表数据更改时的子表数据操作。 ...
    99+
    2024-05-15
  • sql中having是什么
    having 子句用于过滤分组结果,应用于分组后的数据集。它与 where 子句类似,但基于分组结果而不是原始数据。用法:1. 过滤分组后的聚合值。2. 根据分组后的...
    99+
    2024-05-15
  • 在sql中空值用什么表示
    在 sql 中,空值表示未知或不存在的值,可使用 null、空字符串或特殊值表示。处理空值的方法包括使用操作符(is null/is not null)、coalesce 函数(返回第一...
    99+
    2024-05-15
    oracle
  • sql中number什么意思
    sql 中的 number 类型用于存储数值数据,包括小数和整数,特别适合货币、度量和科学数据。其精度由 scale(小数点位数)和 precision(整数字段和小数字段总位数)决定。...
    99+
    2024-05-15
  • sql中空值赋值为0怎么写
    可以通过使用 coalesce() 函数将 sql 中的空值替换为指定值(如 0)。coalesce() 的语法为 coalesce(expression, replacement),其...
    99+
    2024-05-15
  • sql中revoke语句的功能
    revoke 语句用于撤销指定用户或角色的权限或角色成员资格。可撤销的权限包括 select、insert、update、delete 等,撤销的对象类型包括表、视图、存储过程...
    99+
    2024-05-15
    敏感数据
  • sql中REVOKE是什么意思
    revoke 是 sql 中用于撤销用户或角色对数据库对象权限的命令。它通过撤销权限类型、对象级别和目标权限来实现:权限类型:撤销 select、insert、update、d...
    99+
    2024-05-15
  • sql中sp是什么意思
    sql中的sp是存储过程的缩写,它是一种预编译的、已命名的sql语句块,存储在数据库中,可以被用户通过简单命令调用。存储过程的特点有:可重用性、模块化、性能优化、安全性、事务支持。存储过...
    99+
    2024-05-15
    敏感数据
  • sql中references是什么意思
    sql 中的 references 关键字用于在外键约束中定义表之间的父-子关系。外键约束确保子表中的行都引用父表中存在的行,从而维护数据完整性。references 语法的格式为:fo...
    99+
    2024-05-15
  • sql中判断字段为空怎么写
    sql 中可通过 4 种方法判断字段是否为空:1)is null 运算符;2)is not null 运算符;3)coalesce() 函数;4)case 语句。例如,查询所有 colu...
    99+
    2024-05-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作