Sql中判断"库、表、列,视图,存储过程"是否存在

--判断数据库是否存在

IF EXISTS (SELECT * FROM MASTER.sys.sysdatabases WHERE NAME = ‘库名‘)

  PRINT ‘exists ‘

else

  PRINT ‘not exists‘

-- 判断要创建的表名是否存在

IF EXISTS (Select * From sysObjects Where Name =‘表名‘ And Type In (‘S‘,‘U‘))

  PRINT ‘exists‘

ELSE

  PRINT ‘not exists‘

GO

--判断要创建临时表是否存在

If Object_Id( ‘Tempdb.dbo.#Test‘) Is Not NULL--#Test 为临时表名

Begin

  print ‘存在 ‘

End

Else

Begin

  print ‘不存在 ‘

End

-- 判断要创建的存储过程名是否存在

IF EXISTS (Select * From sysObjects Where Name =‘存储过程名‘ And Type In (‘S‘,‘P‘))

  PRINT ‘exists‘

ELSE

  PRINT ‘not exists‘

GO

--判断列名是否存在

IF EXISTS (SELECT O.NAME AS 表名,C.NAME AS 列名 FROM SYSOBJECTS O INNER JOIN SYSCOLUMNS C ON O.ID=C.ID  WHERE O.NAME= ‘表名‘ AND C.NAME = ‘列名‘)

  SELECT ‘EXISTS‘

ELSE

   SELECT ‘NOT EXISTS‘

--判斷 表A 列C 是否存在

IF NOT EXISTS (SELECT 1 FROM SYSOBJECTS T1 INNER JOIN SYSCOLUMNS T2 ON T1.ID=T2.ID WHERE T1.NAME=‘A‘ AND T2.NAME=‘C‘)

--判断表名存在的一个函数

IF COL_LENGTH( ‘表名‘,‘列名‘) IS NULL

  PRINT ‘not exists‘

ELSE

  PRINT ‘exists‘

--新增修改视图SP使用先DROP, 后CREATE的方式. 如果带*的视图使用sp_refreshview刷新. 前面要加 exec

if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[rpt_2033300001_v]‘) and OBJECTPROPERTY(id, N‘IsView‘) = 1)

drop view [dbo].[rpt_2033300001_v]

GO

CREATE VIEW dbo.rpt_2033300001_v

AS

*********

if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[存储过程名]‘) and OBJECTPROPERTY(id, N‘IsProcedure‘) = 1)

-- 删除存储过程

drop procedure [dbo].[存储过程名]

GO

时间: 2024-10-10 17:18:40

Sql中判断"库、表、列,视图,存储过程"是否存在的相关文章

sql中的行转列和列转行的问题

sql中的行转列和列转行的问题 这是一个常见的问题,也是一个考的问题 1.行转列的问题  简单实例 CREATE TABLE #T ( MON1 INT, MON2 INT, MON3 INT ) GO INSERT INTO #T VALUES(1,2,3) GO SELECT * FROM #T --行转列:(union all) SELECT MON1 FROM #T UNION ALL SELECT MON2 FROM #T UNION ALL SELECT MON3 FROM #T G

PL/Sql 中创建、调试、调用存储过程

存储过程  所用函数说明  功能:求和与差  原形:GetSumAndSub(p1 in number , p2 in number ,m out number , b out number)   参数:m=p1+p2 b=p1-p2  1.先建存储过程 左边的浏览窗口选择 procedures ,会列出所有的存储过程,右击文件夹procedures单击菜单"new",弹出  template wizard窗口, name框中输入 GetSumAndSub ,parameters中填入

SQL中两种表复制语句

Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我们在开发.测试过程中,经常会遇到需要表复制的情况,如将 一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了. 1.INSERT INTO SELECT语句

sql server 查询某个表被哪些存储过程调用

原文:sql server 查询某个表被哪些存储过程调用 sql server 查询某个表被哪些存储过程调用 select distinct object_name(id) from syscomments where id in (select id from sysobjects where type ='P') and text like'%TableName%' 原文地址:https://www.cnblogs.com/lonelyxmas/p/9491635.html

SQL server 查询某个表在哪些存储过程(SP)中使用到

1.查询某个表被哪些存储过程(以下简称 SP)使用到 : select distinct object_name(id) from syscomments where id in (select id from sysobjects where type ='P') and text like'%TableName%' 2.查找那些过程对该表做了更新操作: select distinct object_name(id) from syscomments where id in (select i

sql中判断是否存在某个对象

If object_id(N'对象名',N'对象类型') is not null 例如:表是否存在 if object_id(N'tablename',N'U') is not null begin print '存在' end 可选对象类型: AF=聚合函数(CLR) C=check约束 D=default F=foreign key 约束 FN=Sql标量函数 FS=程序集(CLR)标量函数 FT=程序集(CLR)表值函数 IF=SQL内嵌表值函数 IT=内部表 P=SQL存储过程 PC=程

mysql中 information_schema(和sql中的系统表类似)

information_schema数据库表说明: SCHEMATA表:提供了当前mysql实例中所有数据库的信息.是show databases的结果取之此表. TABLES表:提供了关于数据库中的表的信息(包括视图).详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息.是show tables from schemaname的结果取之此表. COLUMNS表:提供了表中的列信息.详细表述了某张表的所有列以及每个列的信息.是show columns from schemana

Sql server2014 内存优化表 本地编译存储过程

参考文献:http://www.infoq.com/cn/news/2013/09/Compiled-Queries http://www.bianceng.cn/database/SQLServer/201502/48247.htm SQL Server 2014内存数据库针对传统的表和存储过程引入了新的结构: memory optimized table(内存优化表)和native stored procedure(本地编译存储过程). 内存优化表:  默认情况下Memory optimiz

[转]sql中判断text类型字段是否为空

用 字段=''会报错:数据类型 text 和 varchar 在 equal to 运算符中不兼容. 正确方法: 1. 字段 is null 2. datalength(字段)=0 注:SQL中的DATALENGTH函数用于返回任何表达式所占用的字节数.