T-SQL 判断表是否存汇总在

1,ADO方式下判断数据表是否存在

面构造两个可重载的函数,用于在ADO方式下判断数据库的数据表是否存在。


函数一:
// ------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
Function TableExist( pAdoCmd: TADOCOMMAND; pcTable : string ) : boolean ; overload ;
varcError : string ;
begin
ADO_COMMAND_EXEC( pAdoCmd, 'Select top 1 from ' + pcTable , cError );
result := ( cError = '' );
end ;

函数二:
// ------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
Function TableExist( pConn:TADOConnection; pcTable : string ) : boolean ; overload ;
vartmpFldList : TStrings ;
nLoop : integer ;
begin
Result := False ;
tmpFldList := TStringList.Create ;
pConn.GetTableNames( tmpFldList, True ); // 包含系统表
for nLoop := 0 to tmpFldList.Count - 1 do
begin
if uppercase( tmpFldList[nLoop] ) = uppercase( pcTable ) then
begin
Result := True ;
break ;
end;
end;
tmpFldList.Free ;
end;

2,sql语句式

select * from sysobjects where   name= 表名  and xtype=''u'' '

或者如下更容易看明白:

 

SQL.Add('select   name   from   sysobjects   where   name   =   tmp   and   type=u');  
  open;  
  ...       
  if   ADOQuery.IsEmpty   then  
      ShowMessage('表tmp不存在!');

 

注意:是xtype不是type,

Type是在6.0就有的,XType在7.0才出现:

Type
对象类型。可以是下列值之一:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
FN = 标量函数
IF = 内嵌表函数
K = PRIMARY KEY 或 UNIQUE 约束
L = 日志
P = 存储过程
R = 规则
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
V = 视图
X = 扩展存储过程

XType
对象类型。可以是下列对象类型中的一种:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程

如果是实表可以用

if exists (select * from sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[表名]--如果表存在就删除

如果是临时表可以用

if   object_id('tempdb..##temp')   is   not   null  
   drop   table   ##temp  

转载于:https://www.cnblogs.com/Miton/archive/2011/06/01/2066139.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值