zoukankan      html  css  js  c++  java
  • 【转载】sql2005中判读视图、表、存储过程等是否存在的语句

    网上找了好多方法都不靠谱,尤其是百度百科的那个IF EXISTS (SELECT* FROM sys.views WHERE object_id = '[dbo].[视图名]',使用的时候直接报错,浪费我的时间

    下面的方法可行,最起码判读存储过程的那个可行,我已经测试了,其它的没有测试

     1 --判断数据库是否存在 
     2 IF EXISTS(SELECT * FROM master.dbo.sysdatabases WHERE name=N'库名') 
     3 print 'exists' 
     4 ELSE 
     5 print 'not exists' 
     6 --------------- 
     7 -- 判断要创建的表名是否存在 
     8 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[表名]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) 
     9 -- 删除表 
    10 DROP TABLE [dbo].[表名] 
    11 GO 
    12 --------------- 
    13 --判断要创建临时表是否存在 
    14 IF Object_Id('Tempdb.dbo.#Test') IS NOT NULL 
    15 BEGIN 
    16 print '存在' 
    17 END 
    18 ELSE 
    19 BEGIN 
    20 print '不存在' 
    21 END 
    22 --------------- 
    23 -- 判断要创建的存储过程名是否存在 
    24 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[存储过程名]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1) 
    25 -- 删除存储过程 
    26 DROP PROCEDURE [dbo].[存储过程名] 
    27 GO 
    28 --------------- 
    29 -- 判断要创建的视图名是否存在 
    30 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[视图名]') AND OBJECTPROPERTY(id, N'IsView') = 1) 
    31 -- 删除视图 
    32 DROP VIEW [dbo].[视图名] 
    33 GO 
    34 --------------- 
    35 -- 判断要创建的函数名是否存在 
    36 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[函数名]') AND xtype IN (N'FN', N'IF', N'TF')) 
    37 -- 删除函数 
    38 DROP FUNCTION [dbo].[函数名] 
    39 GO 
    40 IF col_length('表名', '列名') IS NULL 
    41 print '不存在' 
    42 SELECT 1 FROM sysobjects WHERE id IN (SELECT id FROM syscolumns WHERE name='列名') AND name='表名'
  • 相关阅读:
    maven 父子模块保持相同
    Maven deploy时排除指定的某个module
    源码,反码,补码
    Java日志之Slf4j,Log4J,logback原理总结
    Git Bash设置代理
    分享2个分布式锁
    二叉树的遍历记忆方法
    MySQL百万级数据分页查询及优化
    eclipse无法访问sun.misc.Unsafe类的解决办法
    Spring学习日志之纯Java配置的MVC框架搭建
  • 原文地址:https://www.cnblogs.com/siwei1988/p/2480359.html
Copyright © 2011-2022 走看看