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

这篇具有很好参考价值的文章主要介绍了SQL Server判断数据库、表、列、视图、存储过程、函数是否存在。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言概述

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

二、数据库相关的判断

2.1、判断数据库是否存在

IF EXISTS (SELECT * FROM sys.databases WHERE NAME='TEST')
    PRINT '数据库TEST存在'
ELSE
    PRINT '数据库TEST不存在'

三、数据表相关的判断

3.1、判断数据表是否存在

--方法一
IF OBJECT_ID(N'[dbo].[PRODUCT]',N'U') IS NOT NULL
    PRINT '数据表PRODUCT存在'
ELSE
    PRINT '数据表PRODUCT不存在'

--方法二
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N'[dbo].[PRODUCT]') AND XTYPE='U')
    PRINT '数据表PRODUCT存在'
ELSE
    PRINT '数据表PRODUCT不存在'

--方法三
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N'[dbo].[PRODUCT]') AND OBJECTPROPERTY(ID,N'IsUserTable')=1)
    PRINT '数据表PRODUCT存在'
ELSE
    PRINT '数据表PRODUCT不存在'

3.2、判断临时表是否存在

--方法一
IF OBJECT_ID(N'tempdb..#PRODUCT',N'U') IS NOT NULL
    PRINT '临时表#PRODUCT存在'
ELSE
    PRINT '临时表#PRODUCT不存在'

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

3.3、判断表是否存在某列

--方法一
IF COL_LENGTH(N'[dbo].[PRODUCT]','PRD_ID') IS NOT NULL
    PRINT '表PRODUCT存在列PRD_ID'
ELSE
    PRINT '表PRODUCT不存在列PRD_ID'

--方法二
IF EXISTS (SELECT * FROM syscolumns WHERE ID=OBJECT_ID(N'[dbo].[PRODUCT]') AND NAME='PRD_ID')
    PRINT '表PRODUCT存在列PRD_ID'
ELSE
    PRINT '表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'
ELSE
    PRINT '表PRODUCT不存在列PRD_ID'

3.4、判断列是否自增列

IF COLUMNPROPERTY(OBJECT_ID(N'[dbo].[PRODUCT]'),'PRD_ID','ISIDENTITY')=1
    PRINT '表PRODUCT列PRD_ID是自增列'
ELSE
    PRINT '表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'
ELSE
    PRINT '表PRODUCT不存在索引PK_PRODUCTS'

四、视图相关的判断

4.1、判断视图是否存在

--方法一
IF OBJECT_ID(N'[dbo].[BRC_1001]','V') IS NOT NULL
    PRINT '视图BRC_1001存在'
ELSE
    PRINT '视图BRC_1001不存在'

--方法二
IF EXISTS (SELECT * FROM sysobjects where id=OBJECT_ID(N'[dbo].[BRC_1001]') and OBJECTPROPERTY(ID,N'IsView')=1)
    PRINT '视图BRC_1001存在'
ELSE
    PRINT '视图BRC_1001不存在'

--方法三
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME=N'BRC_1001')
    PRINT '视图BRC_1001存在'
ELSE
    PRINT '视图BRC_1001不存在'

五、存储过程相关的判断

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

--方法一
IF OBJECT_ID(N'[dbo].[BRC_BomCost]','P') IS NOT NULL
    PRINT '存储过程BRC_BomCost存在'
ELSE
    PRINT '存储过程BRC_BomCost不存在'

--方法二
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N'[dbo].[BRC_BomCost]') AND OBJECTPROPERTY(ID,N'IsProcedure')=1)
    PRINT '存储过程BRC_BomCost存在'
ELSE
    PRINT '存储过程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存在'
ELSE
    PRINT '函数BRC_MLTotal不存在'

 文章来源地址https://www.toymoban.com/news/detail-433730.html

到了这里,关于SQL Server判断数据库、表、列、视图、存储过程、函数是否存在的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • SQL server设置用户只能访问特定数据库、访问特定表或视图

    SQL server设置用户只能访问特定数据库、访问特定表或视图

    在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功能: 1.创建用户名 选择默认数据库 服务器角色默认为public 用户映射选择指定数据库 打开需要开放权限的数据库,这里我

    2023年04月09日
    浏览(76)
  • SQL Server数据库判断最近一次的备份执行结果

    SQL Server数据库判断最近一次的备份执行结果

    在SQL Server的官方文档里面可以看到备份和还原的表,但是这些表里面只能找到备份成功的相关信息,无法找到备份失败的记录,比如 msdb.dbo.backupset 。对于一些监控系统未监控作业的情况下,想要监控数据库备份任务执行失败而触发告警规则,有些麻烦。 但是SQL server内部是

    2024年02月03日
    浏览(8)
  • 【SQL Server】数据库开发指南(六)索引和视图的使用技巧、方法与综合应用

    【SQL Server】数据库开发指南(六)索引和视图的使用技巧、方法与综合应用

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2024年02月06日
    浏览(45)
  • Excel 2019访问SQL Server数据库的实现过程

    Excel 2019访问SQL Server数据库的实现过程

    源之:https://vip.kingdee.com/article/288066926977041920?productLineId=11 在日常ERP系统实施过程中,往往会遇到客户的一些个性化需求,比如有些客户习惯用Excel电子表格来查看ERP系统中的数据,业余拓展学习了一下,借助ODBC可以实现这个需求。 一、ODBC数据管理和SQL数据库之间的连接的建

    2024年02月11日
    浏览(9)
  • 存储过程、触发器、游标、视图、自定义函数 字段类型、字段可空、统计字段、逻辑删除 权限系统数据库&无限极类别设计

    在数据库设计中,存储过程、触发器、游标、视图、自定义函数、字段类型、字段可空、统计字段、逻辑删除以及权限系统和无限级类别设计都是重要的概念。下面我将逐一解释这些概念,并提供相关的设计建议。 存储过程 (Stored Procedure) 定义 :存储过程是一组为了完成特定

    2024年03月09日
    浏览(36)
  • 【MySQL】探索MySQL存储过程的魔力,初学者的数据库编程秘笈(内含实战SQL脚本)

    【MySQL】探索MySQL存储过程的魔力,初学者的数据库编程秘笈(内含实战SQL脚本)

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:重温MySQL MySQL存储过程作为一种服务器端的 数据库编程方式 ,提供了高效、可重用的方法来执行相对复杂的数据库操

    2024年02月15日
    浏览(30)
  • 数据库实验:SQL的数据视图

    数据库实验:SQL的数据视图

    视图是由数据库中的一个表或多个表导出的虚拟表,其作用是方便用户对数据的操作 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的

    2024年02月05日
    浏览(29)
  • 数据库sql语句(视图的创建)

    数据库sql语句(视图的创建)

    例题:  建表:要注意各表之间的索引联系,建表先后顺序很重要,不然建不了,例如先建dept,在建其他表,先在dept插入数据,再在其他表插入数据 (1) (2)  (3)  (4) (5)    插入数据如下图 sql语句: 在 Student 表中加入属性 SAGE(INT 型 )  将 Student 表中的属性 SA

    2024年02月04日
    浏览(34)
  • GaussDB云数据库SQL应用系列-视图管理

    GaussDB云数据库SQL应用系列-视图管理

    一、前言 GaussDB是一款基于云计算技术的高性能关系型数据库,支持多种数据模型和分布式架构。在GaussDB中,视图管理是非常重要的一项功能,它可以帮助用户更方便地管理和查询数据。 数据库视图管理是指对数据库中的视图进行创建、修改、删除、查询等操作的过程。 参

    2024年02月06日
    浏览(216)
  • 数据库原理及应用实验报告-实验4-SQL的视图

    数据库原理及应用实验报告-实验4-SQL的视图

    实验目的 熟悉SQL支持的有关视图的操作,能够熟练使用SQL语句来创建需要的视图,对视图进行查询和删除视图。 实验内容 定义常见的视图形式,包括: 行列子集视图 WITH CHECK OPTION的视图 基于多个基表的视图 基于视图的视图 带表达式的视图 分组视图 通过实验考察WITH CHEC

    2023年04月26日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包