MS sql 判断数据库、表、函数、存储过程是否存在

原创 2017年03月22日 10:41:00
-- 库是否存在
if exists(select * from master..sysdatabases where name=N'库名')
print 'exists'
else
print 'not exists'
  

-- 判断要创建的表名是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
-- 删除表
drop table [dbo].[表名]
GO

--判断字段是否存在,添加字段ManageMechanism_Id    -2008
IF NOT EXISTS (SELECT * FROM syscolumns 
	WHERE [name] = 'ManageMechanism_Id' AND id = (SELECT TOP 1 id 
		FROM sysobjects WHERE [name] = '表名'))
ALTER TABLE 表名
	ADD [ManageMechanism_Id] udtGuid NULL 
GO

--判断约束是否存在 
--FK_HAS_ACCI_REFERENCE_HAS_ACCIQUI 为约束名称
if exists (select 1 from dbo.sysreferences r join dbo.sysobjects o on (o.id = r.constid and o.type = 'F') 
           where r.fkeyid = object_id('表名') and o.name = 'FK_HAS_ACCI_REFERENCE_HAS_ACCIQUI')
    alter table 表名 drop constraint FK_HAS_ACCI_REFERENCE_HAS_ACCIQUI
go
--添加约束alter table 表名 
add constraint FK_HAS_ACCI_REFERENCE_HAS_ACCIQUI foreign key (AccidentQuickReport_Id)
    references 另外的关联表名 (AccidentQuickReport_Id) on delete cascadego
-- 判断要创建的视图名是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[视图名]') and OBJECTPROPERTY(id, N'IsView') = 1)
-- 删除视图
drop view [dbo].[视图名]
GO



-- 判断要创建的函数名是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[函数名]') and xtype in (N'FN', N'IF', N'TF'))
-- 删除函数
drop function [dbo].[函数名]
GO 

if exists (select * from sysobjects where xtype='fn' and name='函数名')

--2008
IF OBJECT_ID('[函数名]')  IS NOT NULL
    DROP  function [dbo].[函数名]
GO


if col_length('表名', '列名') is null
print '不存在'
select 1 from sysobjects where id in (select id from syscolumns where name='列名') and name='表名'


--除法显示小数 结果为0.0178772749234981
select (cast(111 as float)/cast(datediff(dd, '2000-3-01','2017-3-01') as float))
--除法,小数部分不显示 结果为0
select (cast(111 as float)/cast(datediff(dd, '2000-3-01','2017-3-01') as float))

--除法显示小数 结果为0.0179 保留两位有效数字。
--如 Round(2.3344,2) 则 会在把有效数字后面的 变为0 ,成 2.3300。
select round((cast(111 as float)/cast(datediff(dd, '2000-3-01','2017-3-01') as float)),4)
--除法显示小数 结果为0.0179 保留两位有效数字。
select Convert(decimal(18,4),(cast(111 as float)/cast(datediff(dd, '2000-3-01','2017-3-01') as float)))




Simple Bitmapped menu items

 简单位图菜单这篇文章由Burchak Alexander原著。   有时应用程序使用动态创建的工具条。为什么我要为了位图菜单而创建工具条资源呢?(查看Iuri Apollonio 文章)  我提议装...
  • lumg
  • lumg
  • 2002-05-02 10:22:00
  • 714

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

--1.判断数据库是否存在 IF EXISTS ( SELECT * FROM sys.databases WHERE NAME = '[数据库名]' ...
  • a497785609
  • a497785609
  • 2013-06-08 21:11:34
  • 1879

【转】如何判断SQL中是否已经存在某表、存储过程、函数等

--判断是否存在addOneArticle这个存储过程 if Exists(select name from sysobjects where NAME = 'addOneArticle' an...
  • sl159
  • sl159
  • 2012-07-27 21:30:47
  • 2862

SQL SERVER2008判断存储过程,函数存在则删除

1、存储过程判断删除 IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[dbo].[存储过程]') and OBJECT...
  • qq_16291159
  • qq_16291159
  • 2017-10-27 11:37:17
  • 440

SQL SERVER 删除前先判断指定的表或者存储过程是否存在

1、创建存储过程:CREATE PROCEDURE proc_pr ---将create修改成alter可以修改存储过程; AS BEGIN IF EXISTS(SELECT * FROM sy...
  • baidu_32731497
  • baidu_32731497
  • 2016-06-05 19:59:56
  • 3154

删除前先判断指定的表或者存储过程是否存在if exists

ORACLE、SQL SERVER删除前先判断指定的表或者存储过程是否存在if exists
  • S630730701
  • S630730701
  • 2016-09-13 15:38:35
  • 2709

mssql查询特定表&列是否存在

一、sql server中 1、表  IF [NOT] EXISTS (select count(*) from sysobjects where id=object_id('表名') and ty...
  • jc_benben
  • jc_benben
  • 2013-08-06 16:07:01
  • 663

SQL语句判断表 数据库 数据是否存在

 Sql Server中判断表或者数据库是否存在  if exists(select 1 from master..dbo.sysdatabases where name=example)print ...
  • letian_fly
  • letian_fly
  • 2008-09-02 15:37:00
  • 24173

SQL Server 用EXISTS判断数据库,表是否存在

IF EXISTS(SELECT * FROM sysobjects WHERE name='bbsUser') DROP TABLE bbsUsers --判断表是否存在 if...
  • u012997311
  • u012997311
  • 2017-05-22 21:30:20
  • 2286

sql中存储过程中判断记录是否存在时

在sql sqlserver存储过程中,如果用来判断该记录是否存在时。如果用if exitst(select * from table )如果记录多的话会影响查询速度,可以转换为 if exitst(...
  • yuexuning58
  • yuexuning58
  • 2012-05-03 17:28:15
  • 7500
收藏助手
不良信息举报
您举报文章:MS sql 判断数据库、表、函数、存储过程是否存在
举报原因:
原因补充:

(最多只允许输入30个字)