在sqlserver中,创建表之前判断表是否存在,如果存在则删除已有表
----SQL-Server if exists (select 1 from sysobjects where id = object_id('EMP') and type = 'U') drop table S_Evaluate go --CREATE Table: EMP create table EMP( Id numeric identity, -- 评估ID Conclusion text null --结论 constraint PK_S_EMP primary key nonclustered(Id) ) go
ORACLE 数据库
但是在oracle中却没有。如果直接使用drop table那么如果表不存在会报错,导致后续语句无法运行。因此可以通过一个存储过来来进行判断。
主要是查询all_tables表的TABLE_NAME和OWNER,如果表存在,则执行execute immediate 'drop table TABLE_NAME';
--判断表是否存在,如果存在则删除 declare num number; begin select count(1) into num from all_tables where TABLE_NAME = 'EMP' and OWNER='SCOTT'; if num=1 then execute immediate 'drop table EMP'; end if; end; / --创建表 CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7, 2), COMM NUMBER(7, 2), DEPTNO NUMBER(2));
现在使用DB2,网上找了很久也没个好方法,基本上用简单的sql语句来实现是不大可能的,能找到的方法都是自己写存储过程实现
删除表的如下:
CREATE PROCEDURE ExistsTest(IN TableName varchar(50),OUT iReturn int) LANGUAGE SQL P1: BEGIN DECLARE stmt VARCHAR(200); IF EXISTS (select * from sysibm.systables where TID <> 0 and name = TableName ) THEN set stmt ='drop table '|| TableName; PREPARE s1 FROM stmt; EXECUTE s1; set iReturn =0; else set iReturn =-1; END IF; END P1@
END P1后面的@根据所用编辑工具的不同,默认的结束也不一样。测试了一下QUEST CENTRAL FOR DB2,默认是分号,如果想用@自己修改工具的配置吧
由于DB2不像sqlserver那样把所有对象组织到一个sysobjects里,所以想要实现不同的功能就需要修改这个存储过程,
如:
syscat.procedures 存储过程
syscat.tables 表
sysibm.tables 表
syscat.views 视图
sysibm.views 视图
以上表和视图的系统视图在syscat和sysibm里都存在,个人水平不高,不知道是为什么,呵呵,从网上搜到的信息里摘一段出来如下:
数据库的视图里有sysibm.tables和syscat.tables,这两个有什么区别?很多资料上不是说sysibm模式的是基表吗,怎么在视图里也有sysibm模式,是干什么用的?
sysibm.tables的表里面的信息比syscat.tables的少,或者说IBM认为你想知道的信息在sysibm.tables里面已经都可以知道了,这个应该是给用户使用的。syscat.tables应该是给系统使用的。
相关推荐
要求在 创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出"已删除!" 信息,否则就给出"不存在,可创建!"的信息。 b) 创建一个名为t_student_t_score的存储过程:可查询出某学号段的同学的学号...
可以导出到Excel,可以根据Excel字段文档生成Sql,数据库表误删除又没有备份的时候就很有帮助了,而且支持反向的根据生成的Model去生成创建数据库表的Sql。 注:暂时不支持索引及外键等需要关联另外一张表的数据关系...
1-4 在已有的数据库中创建数据表(DAO) 10 1-5 在已有的数据库中创建数据表(ADOX) 12 1-6 在已有的数据库中创建数据表(SQL,Command对象) 13 1-7 在已有的数据库中创建数据表(SQL,Recordset对象) 13 1-8 ...
实例1-13 利用已有的数据表创建新数据表(ADO) 实例1-14 利用已有的数据表创建新数据表(DAO) 实例1-15 利用已有的数据表创建新数据表(Access) 第2章 获取Access数据库信息 实例2-1 检查数据表是否存在...
实例1-13 利用已有的数据表创建新数据表(ADO) 实例1-14 利用已有的数据表创建新数据表(DAO) 实例1-15 利用已有的数据表创建新数据表(Access) 第2章 获取Access数据库信息 实例2-1 检查数据表是否存在...
03018判断工作表是否存在(之一) 03019判断工作表是否存在(之二) 03020判断工作表是否自动重新计算 03021判断工作表被保护时是否可以进行自动筛选的操作 03022判断工作表被保护时是否启用分级显示符号 03023判断...
createFileByDeleteOldFile : 判断文件是否存在,存在则在创建之前删除 copyDir : 复制目录 copyFile : 复制文件 moveDir : 移动目录 moveFile : 移动文件 deleteDir : 删除目录 deleteFile : 删除文件 ...
如果已经填写,则判断输入的部门名称在部门表中是否已经存在,如果存在,则不能新增,并给出提示“该部门名称已经存在!”;如果不存在,则新增部门。如果新增成功,则弹出提示“新建成功!”,并关闭该模态窗口,...
6、比较两表人员差异追加列记录:其效果是向已有表中增加新表中的人员(行数据)和表中所有人员的新增信息(列数据),它适合于档案的逐步完善与保存。本命令可用于档案补充。例如:第一个表中有A、B、C三人,第二个...
1.59. 如果怀疑应用程序有死锁现象,如何确认是否死锁,并判断是哪些程序引起的死锁? 84 1.60. 数据库创建以后相关的目录和文件都有哪一些? 85 1.61. 自增列(IDENTITY) 86 1.62. 修改表结构的注意事项(原) 86 1.63....
如果已经执行过查询操作,“output”文件夹下就会存在查询出的文件,当再次执行查询时,本程序会在已存在的文件后追加查询结果。这样就会出现重复的记录或内容。因此,当需要多次查询时,每次查询前需要点击“清空...
如果删除的表有外键, 删除的速度类似于delete。但新版本的MySQL中truncate的速度比delete速度快。 Ø 约束 MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要...
关闭程序时如果上述两者之一存在删除列表,会问询是否执行。 注意,为避免病毒程序守护,Wsyscheck可以在删除某些文件时可能会采取0字节文件占位的方式来确保删除。这些0字节文件在Wsyscheck退出后会被自动清理。...
23.3.3 删除存在的数据表 23.4 对数据库中表的操作 23.4.1 向表中添加记录 23.4.2 浏览表中记录 23.4.3 修改已有记录 23.4.4 删除指定记录 23.5 可回复留言板的开发(PHP+SQL Server) 23.5.1 数据表的设计 23.5.2 ...
RENAME oldname newname更改key的名字,新键如果存在将被覆盖 RENAMENX oldname newname 更改key的名字,如果名字存在则更改失败 DBSIZE返回当前数据库的key的总数 EXPIRE设置某个key的过期时间(秒),(EXPIRE ...
而且不能删除当前用户,如果删除的用户有数据对象,那么必须加上关键字cascade。 用法:drop user 用户名 [cascade] 四、 用户权限与角色 1. 权限 Oracle中权限主要分为两种,系统权限和实体权限。 系统权限:...
根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明...
如果表之间有匹配行,则整个结果集行包含基表的数据值。 1.6.4.2 语法 select A.*, B.* from student_A A full outer join student_B B on A.Uuid = B.Uuid; 1.6.4.3 结果 1.6.4.4 全外连接不支持(+)写法 1.6.5 ...
关闭程序时如果上述两者之一存在删除列表,会问询是否执行。 注意,为避免病毒程序守护,Wsyscheck可以在删除某些文件时可能会采取0字节文件占位的方式来确保删除。这些0字节文件在Wsyscheck退出后会被自动清理。...
关闭程序时如果上述两者之一存在删除列表,会问询是否执行。 注意,为避免病毒程序守护,Wsyscheck可以在删除某些文件时可能会采取0字节文件占位的方式来确保删除。这些0字节文件在Wsyscheck退出后会被自动清理。...