博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORACLE创建表之前判断表是否存在与SQL Server 对比使用
阅读量:4648 次
发布时间:2019-06-09

本文共 2185 字,大约阅读时间需要 7 分钟。

在SQL Server 数据库中,我们在创建表之前删除表,有if exit()这样的语句,但是在oracle中却没有。如果直接使用drop table那么如果表不存在会报错,导致后续语句无法运行。因此可以通过一个存储过来来进行判断。如果表存在,则执行execute PROC_CREATE_INFO 即可
代码如下:
1 CREATE OR REPLACE PROCEDURE PROC_CREATE_INFO(P_TABLE_NAME IN USER_TABLES.TABLE_NAME%TYPE) IS 2     V_SQL   VARCHAR2(32767); 3     V_BEGIN NUMBER; 4     V_END   NUMBER; 5     V_TOTAL NUMBER;     6   TYPE TYPE_TABLE IS TABLE OF USER_TABLES.TABLE_NAME%TYPE; 7   TT TYPE_TABLE; 8   CURSOR CUR_TABLE_NAME IS 9     SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME = P_TABLE_NAME;10 BEGIN11   SELECT DBMS_UTILITY.GET_TIME INTO V_BEGIN FROM DUAL;12   OPEN CUR_TABLE_NAME;13   LOOP14     FETCH CUR_TABLE_NAME BULK COLLECT15       INTO TT;16     IF P_TABLE_NAME IS NULL THEN17  V_SQL := 'CREATE TABLE ' || P_TABLE_NAME || '(' ||18                   'workdate       NVARCHAR2(10) not null,19                   attendancetype NVARCHAR2(40)  not null,20                   starttime      NVARCHAR2(5)   not null,21                   personid       NVARCHAR2(40)  not null,22                   endtime        NVARCHAR2(5),23                   resulttime     NUMBER(18,2),24                   departmentid   NVARCHAR2(40),25                   optime         NVARCHAR2(23),26                   lastoptime     DATE,27                   statustype     NVARCHAR2(23),28                   businessunitid NVARCHAR2(40) default "11125050-4860-4d84-b875-ed45db9c222"' || ')';29       EXECUTE IMMEDIATE V_SQL;30     END IF;31     EXIT WHEN CUR_TABLE_NAME%NOTFOUND;32   END LOOP;33   CLOSE CUR_TABLE_NAME;34   SELECT DBMS_UTILITY.GET_TIME INTO V_END FROM DUAL;35   SELECT TO_CHAR(V_END - V_BEGIN) / 100 INTO V_TOTAL FROM DUAL;36 EXCEPTION37   WHEN NO_DATA_FOUND THEN38     NULL;39   WHEN OTHERS THEN40     DBMS_OUTPUT.PUT_LINE(SQLCODE || '---' || SQLERRM);41 END;
View Code

 

另外SQL Server 中语句如下:

1 IF ( EXISTS (SELECT *  FROM   sys.objects 2              WHERE  UPPER(name) = UPPER('TABLE_NAME')) ) 3   DROP table TABLE_NAME 4 GO 5 CREATE TABLE TABLE_NAME( 6     [no] [int] NOT NULL, 7     [COLUMNNAME] [nvarchar](50) NULL, 8     [MONTH] [nvarchar](40) NULL 9 ) ON [PRIMARY]10 GO
View Code
仅供参考使用

转载于:https://www.cnblogs.com/xinhuawei/p/5653602.html

你可能感兴趣的文章
mysql中utf8和utf8mb4区别
查看>>
谈谈源码管理那点事儿(一)——源码管理十诫(转)
查看>>
拒绝switch,程序加速之函数指针数组
查看>>
[你必须知道的.NET]第二十五回:认识元数据和IL(中)
查看>>
.NET中的三种Timer的区别和用法
查看>>
python第三方包安装方法(两种方法)
查看>>
MySQL 索引知识整理(创建高性能的索引)
查看>>
C++ 头文件
查看>>
ZOJ 1008 Gnome Tetravex(DFS)
查看>>
Mysql基础知识:操作数据库
查看>>
mysql 数据库远程访问设置方法
查看>>
Far manager界面混乱问题解决
查看>>
java读取xml文件
查看>>
Go数组和切片定义和初始化
查看>>
用javascript将数据导入Excel
查看>>
域账号修改后,导致vs中的git连接失败
查看>>
redis集群结构图
查看>>
是用CXF开发Web Service
查看>>
python 作用域
查看>>
ajaxSetup()方法
查看>>