SQL Server判断数据库、表、列、视图、存储过程、函数是否存在

一、前言概述

在写一些业务逻辑相对复杂点的存储过程的时候,经常会用到临时表或者数据表作为临时结果的保存。但每次在作表是否存在的判断时,往往想不起完整的SQL写法。因此,记录一些常用的数据库对象是否存在的判断方法,可以达到快速查找的目的。正是:好记性不如烂笔头。

二、数据库相关的判断

2.1、判断数据库是否存在
IF EXISTS (SELECT * FROM sys.databases WHERE NAME='TEST')PRINT '数据库TEST存在'
ELSEPRINT '数据库TEST不存在'

三、数据表相关的判断

3.1、判断数据表是否存在

--方法一
IF OBJECT_ID(N'[dbo].[PRODUCT]',N'U') IS NOT NULLPRINT '数据表PRODUCT存在'
ELSEPRINT '数据表PRODUCT不存在'--方法二
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N'[dbo].[PRODUCT]') AND XTYPE='U')PRINT '数据表PRODUCT存在'
ELSEPRINT '数据表PRODUCT不存在'--方法三
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N'[dbo].[PRODUCT]') AND OBJECTPROPERTY(ID,N'IsUserTable')=1)PRINT '数据表PRODUCT存在'
ELSEPRINT '数据表PRODUCT不存在'

3.2、判断临时表是否存在

--方法一
IF OBJECT_ID(N'tempdb..#PRODUCT',N'U') IS NOT NULLPRINT '临时表#PRODUCT存在'
ELSEPRINT '临时表#PRODUCT不存在'--方法二
IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE ID=OBJECT_ID(N'tempdb..#PRODUCT') AND XTYPE='U')PRINT '临时表#PRODUCT存在'
ELSEPRINT '临时表#PRODUCT不存在'

3.3、判断表是否存在某列

--方法一
IF COL_LENGTH(N'[dbo].[PRODUCT]','PRD_ID') IS NOT NULLPRINT '表PRODUCT存在列PRD_ID'
ELSEPRINT '表PRODUCT不存在列PRD_ID'--方法二
IF EXISTS (SELECT * FROM syscolumns WHERE ID=OBJECT_ID(N'[dbo].[PRODUCT]') AND NAME='PRD_ID')PRINT '表PRODUCT存在列PRD_ID'
ELSEPRINT '表PRODUCT不存在列PRD_ID'--方法三
IF EXISTS (SELECT * FROM sysobjects A INNER JOIN syscolumns B ON A.ID=B.ID WHERE A.XTYPE='U' AND A.NAME='PRODUCT' AND B.NAME='PRD_ID')PRINT '表PRODUCT存在列PRD_ID'
ELSEPRINT '表PRODUCT不存在列PRD_ID'

3.4、判断列是否自增列
IF COLUMNPROPERTY(OBJECT_ID(N'[dbo].[PRODUCT]'),'PRD_ID','ISIDENTITY')=1PRINT '表PRODUCT列PRD_ID是自增列'
ELSEPRINT '表PRODUCT列PRD_ID不是自增列'
3.5、判断表中是否存在索引
IF EXISTS(SELECT * FROM SYSINDEXES WHERE ID=OBJECT_ID(N'[dbo].[PRODUCT]') AND NAME='PK_PRODUCTS')PRINT '表PRODUCT存在索引PK_PRODUCTS'
ELSEPRINT '表PRODUCT不存在索引PK_PRODUCTS'

四、视图相关的判断

4.1、判断视图是否存在

--方法一
IF OBJECT_ID(N'[dbo].[BRC_1001]','V') IS NOT NULLPRINT '视图BRC_1001存在'
ELSEPRINT '视图BRC_1001不存在'--方法二
IF EXISTS (SELECT * FROM sysobjects where id=OBJECT_ID(N'[dbo].[BRC_1001]') and OBJECTPROPERTY(ID,N'IsView')=1)PRINT '视图BRC_1001存在'
ELSEPRINT '视图BRC_1001不存在'--方法三
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME=N'BRC_1001')PRINT '视图BRC_1001存在'
ELSEPRINT '视图BRC_1001不存在'

五、存储过程相关的判断

5.1、判断存储过程是否存在

--方法一
IF OBJECT_ID(N'[dbo].[BRC_BomCost]','P') IS NOT NULLPRINT '存储过程BRC_BomCost存在'
ELSEPRINT '存储过程BRC_BomCost不存在'--方法二
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N'[dbo].[BRC_BomCost]') AND OBJECTPROPERTY(ID,N'IsProcedure')=1)PRINT '存储过程BRC_BomCost存在'
ELSEPRINT '存储过程BRC_BomCost不存在'

六、函数相关的判断

6.1、判断函数是否存在
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N'[dbo].[BRC_MLTotal]') AND XTYPE IN (N'FN',N'IF',N'TF'))PRINT '函数BRC_MLTotal存在'
ELSEPRINT '函数BRC_MLTotal不存在'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/223346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文翻译】Learning Deep Features for Discriminative Localization

原文:Learning Deep Features for Discriminative Localization 摘要 在这项工作中,我们重新审视了文献[13]中提出的全局平均池化层,并阐明了它如何明确地使卷积神经网络具有出色的定位能力,尽管该网络是在图像级标签上进行训练的…

Qt/QML编程学习之心得:信号+槽(十三)

Qt设计GUI界面应用程序,类似于Windows的Visual Studio设计界面,最主要的就是消息机制,如果vs下叫MFC机制,那么Qt就叫信号槽机制。MFC采用消息映射机制,每个类都有一个消息映射,与该类有关的消息都出现在该类的消息映射中。类的消息映射把一组消息映射宏组成一个消息映射表…

排序算法:【冒泡排序】、逻辑运算符not用法、解释if not tag:

注意: 1、排序:将一组无序序列,调整为有序的序列。所谓有序,就是说,要么升序要么降序。 2、列表排序:将无序列表变成有序列表。 3、列表这个类里,内置排序方法:sort( )&#xff0…

Python实现图形的几何变换

一、能够提供对话框窗口,输入三角形的顶点坐标;或者,采用鼠标左键单击方式输入三角形的顶点坐标。 二、对输入的三角形顶点坐标进行五种基本几何变换: 对于平移变换,能够提供对话框窗口,输入平移向量&…

HashMap:理解Hash、底层实现与扩容机制

一、简单叙述 HashMap是Java中常用的一种数据结构,它以键值对的形式存储数据,具有高效的查找、插入和删除操作。本文将详细介绍HashMap的底层实现原理,包括哈希技术、底层数据结构和扩容机制,帮助读者深入理解HashMap的工作原理。…

Java IO 模型之 BIO、NIO、AIO 详解

目录 一. 前言 二. IO 模型 2.1. IO 模型分类 2.2. BIO、NIO、AIO 使用场景分析 2.3. NIO 和 BIO 的比较 三. BIO(同步阻塞) 3.1. BIO 编程流程 3.2. BIO 应用实例 3.3. 问题分析 四. NIO(同步非阻塞) 4.1. 基本介绍 …

Dubbo 3.x源码(13)—Dubbo服务发布导出源码(2)

基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo 3.x源码(12)—Dubbo服务发布导出源码(1),也就是Dubbo服务发布导出的入口源码,现在我们继续学习,服务导出的核心方法doExportUrls的源码。 Dubbo 3.x…

一文读懂Java中的设计模式——单例模式!默认情况下,Spring的Bean就是单例的

单例模式概念 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式只应在有真正的“单一实例”的需求时才可使用。总结起来单例模式有三个优点: 全局访问共享资源:当需要在应用程序的多个地方共享和使用相…

跑代码中遇到的错误合集(持续更新)

1.TypeError: dropout(): argument ‘input‘ (position 1) must be Tensor, not str 原因:dropout函数接收到的参数是一个字典类型(需手动设置其不要返回字典类型) 解决步骤: 1.根据代码定位到dropout函数 2.定位到函数中的参数 3.对给dropout函数参数赋值的函数的…

[渗透测试学习] Sau - HackTheBox

首先是信息搜集,nmap扫一下 nmap -sV -sC -p- -v 10.10.11.224 发现存在两个端口,55555端口有http服务,访问一下 获得线索request-baskets版本为1.2.1,搜索发现存在漏洞 那么我们试试构造ssrf,create的时候bp抓包 构…

定时器TIM HAL库+cubeMX(上)

定时器时钟源APB1 36MHz 一.基本定时器 1.基本框图 2.溢出时间计算 3.配置定时器步骤 TIM_HandleTypeDef g_timx_handle;/* 定时器中断初始化函数 */ void btim_timx_int_init(uint16_t arr, uint16_t psc) {g_timx_handle.Instance TIM6;g_timx_handle.Init.Prescaler p…

【数据安全】金融行业数据安全保障措施汇总

数字化的今天,数据的价值不可估量,尤其是金融行业,数据不仅代表着企业的核心资产,还涉及到客户的隐私和信任。因此对于金融行业而言,保障数据安全至关重要。下面我们就来一起讨论为什么金融行业要保障数据安全&#xf…

web界面请求过程

一、计算机获取IP(DHCP协议): 计算机生成DHCP报文,并将此报文放入UDP报文段中(源端口68,目的端口67),此UDP报文段被放入IP数据报中(广播IP目的地址:255.255.255.255,源I…

Idea执行bat使用maven打包springboot项目成docker镜像并push到Harbor

如果执行以下命令失败,先把mvn的-q参数去掉,让错误输出到控制台。 《idea配置优化、Maven配置镜像、并行构建加速打包、解决maven打包时偶尔几个文件没权限的问题》下面的使用company-repo私有仓库和阿里云镜像仓库同时使用的配置参考。 bat echo off …

Linux学习教程(第十二章 Linux系统管理)一

第十二章 Linux系统管理(进程管理、工作管理和系统定时任务)(一) 很多人一看本章要学习系统管理了,策一感觉就是"虽然不知道你在说什么,但是看起来很高端"。 其实,系统管理只是一个统…

要实现长页面滑动到指定位置触发动画效果(亲测有效)

1.添加触发动画的元素&#xff1a;在你的 HTML 文件中&#xff0c;将需要触发动画的元素添加相应的类名<div class"animation"> <p>安全工矿 智能工矿 安全工矿 智能工矿</p> </div> 给一个 <div> 元素添加 .animation…

JVM 详解(JVM组成部分、双亲委派机制、垃圾回收算法、回收器、回收类型、了解调优思路)

目录 JVM 详解&#xff08;JVM组成部分、双亲委派机制、垃圾回收算法、回收器、回收类型、了解调优思路&#xff09;1、概念&#xff1a;什么是 JVM ?JVM 的作用&#xff1f; 2、JVM 的主要组成部分&#xff1f;类加载器&#xff08;Class Loader&#xff09;&#xff1a;简单…

02基于matlab的卡尔曼滤波

基于matlab的卡尔曼滤波&#xff0c;可更改状态转移方程&#xff0c;控制输入&#xff0c;观测方程&#xff0c;设置生成的信号的噪声标准差&#xff0c;设置状态转移方差Q和观测方差R等参数&#xff0c;程序已调通&#xff0c;需要直接拍下。

集成数据保护,为您的混合多云环境提供全方位保护

集成数据保护&#xff0c;为您的混合多云环境提供全方位保护 担心数据可用性和数据恢复问题&#xff1f;现在是时候评估您管理混合云基础架构的方式了。NetApp 可以帮助您在整个混合云中抵御计划外中断和数据丢失&#xff0c;并协调响应和恢复……所有这些都不会降低性能。 为…

Vue学习计划-Vue2--VueCLi(五)全局事件总线、消息订阅与发布(pubsub)

抛出问题:我们多级组件&#xff0c;或者任意不想关的子组件如何传递数据呢&#xff1f; 1. 全局事件总线&#xff08;$bus&#xff09; 一种组件间通信的方式&#xff0c;适用于任意组件间通信 全局事件总线示意图&#xff1a; 安装全局事件总线&#xff1a; new Vue({..…