查询代码在哪个视图、存储过程、函数、触发中使用过「建议收藏」

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

    工作中偶尔会出现:想用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].[表名]

代码100分

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

代码100分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 类型

    结果如下:

查询代码在哪个视图、存储过程、函数、触发中使用过「建议收藏」

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11129.html

(0)
上一篇 2022-12-16
下一篇 2022-12-16

相关推荐

  • 如何运行Python代码?

    如何运行Python代码? Python是一种高级编程语言,可用于开发各种类型的应用程序,包括网站和应用程序。本文将介绍如何运行Python代码,包括如何保存和运行Python程序文件,获得用户界面以及在虚拟机和VS Code中运行Python代码。

    2024-08-06
    40
  • Flink使用Pod Template将状态快照(Checkpoint、Savepoint)存储在NFS[通俗易懂]

    Flink使用Pod Template将状态快照(Checkpoint、Savepoint)存储在NFS[通俗易懂]背景 Flink 版本 1.13.3,使用 native k8s 部署模式,原采用 HDFS 作为状态快照(Checkpoint、Savepoint)的存储地址,但是由于仅使用了其 HDFS 作为状态

    2023-05-04
    137
  • Python实现电信行业词典,助力通信网络技术开发

    Python实现电信行业词典,助力通信网络技术开发随着通信网络技术的快速发展,快速准确的信息交互成为了人们生活中不可或缺的一部分。电信行业作为信息交互的重要基础,常常需要针对行业特定术语进行查阅。因此,我们有必要开发一款电信行业词典,以方便相关人员查阅术语含义,从而加快信息交互的速度。

    2024-02-12
    98
  • 优雅高效的编程语言——Python

    优雅高效的编程语言——PythonPython的语法非常清晰和简单。Python的语法使用空格而不是花括号或关键字结束符号来定义代码块。这种方式不仅使代码易于阅读,还可以避免代码块缺少结束符号导致的错误。Python还具有直观的结构,变量和函数的名称易于理解和记忆。

    2024-01-12
    102
  • Python下直观易懂的解析

    Python下直观易懂的解析Python是一种高级编程语言,它的解释执行可以让开发者更加专注于业务逻辑而不是底层的代码实现。Python的解释器会将Python代码翻译成字节码,并在Python虚拟机上执行这些字节码。同时,Python是一种动态的语言,它能够根据上下文自动推断数据类型,这使得Python编写的程序更加简洁易懂。

    2024-01-01
    131
  • 基于Storm的WordCount「建议收藏」

    基于Storm的WordCount「建议收藏」Storm WordCount 工作过程 Storm 版本: 1、Spout 从外部数据源中读取数据,随机发送一个元组对象出去; 2、SplitBolt 接收 Spout 中输出的元组对象,将元组中的

    2022-12-27
    149
  • mysql8的新增密码策略[通俗易懂]

    mysql8的新增密码策略[通俗易懂]mysql的8.0版本新增了密码策略管理相关的功能,新版本对账户密码要求可以做更多的管控和操作,比如设置密码的可重复使用限制、修改密码的验证策略等,安全性较5.7版本有了一定提升,下面一起来看下。 …

    2023-01-28
    145
  • 使用Django搭建Web应用

    使用Django搭建Web应用随着移动设备的普及,Web应用的需求越来越大。Python的Django框架就是一个非常流行的Web应用框架,它帮助开发者高效地设计和开发Web应用。

    2024-06-23
    46

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注