oracle创建表之前判断表是否存在,如果存在则删除已有表 drop table abccreate table abc(.)先删除表,然后在创建.
oracle创建表之前判断表是否存在,如果存在则删除已有表 |1、创建删表函数,2113create or replace procedure drop_table(tbl_name varchar2)asv_cnt number;beginselect count(*)into v_cnt from user_tables t where table_name=upper(tbl_name);如果存在则删除if v_cnt>;0 thenexecute immediate 'drop table '|5261tbl_name|' purge';dbms_output.put_line('删除表('|tbl_name|')成功4102');elsedbms_output.put_line('表('|tbl_name|')未建1653');end if;end;2、编译该函数,是函数可以正常执行,3、测试函数,输入不存在的表名test_aaa4、查看输出窗口,为,表未建,5、再次测试函数,输入存在的表名,6、查看输出窗口,表已删除,
oracle创建表之前判断表是否存在,如果存在则删除已有表 主要是查询all_tables表的TABLE_NAME和OWNER,如果表存在,则执行execute immediate 'drop table TABLE_NAME';判断表是否存在,如果存在则删除declarenum number;beginselect count(1)into num from all_tables where TABLE_NAME='EMP' and OWNER='SCOTT';if num=1 thenexecute 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));可以将上述存储过程加载到每一个create table前面。
oracle创建表之前判断表是否存在,如果存在则删除已有表 declarenum number;beginselect count(1)into num from user_tables where table_name=upper('sys_area');if num>;0 thenexecute immediate 'drop table sys_area';end if;end;区域表CREATE TABLE sys_areaid Number(4)NOT NULL,parent_id varchar2(64)NOT NULL,parent_ids varchar2(2000)NOT NULL,name nvarchar2(100)NOT NULL,sort number(10,0)NOT NULL,code varchar2(100),type char(1),create_by varchar2(64)NOT NULL,create_date timestamp NOT NULL,update_by varchar2(64)NOT NULL,update_date timestamp NOT NULL,remarks nvarchar2(255),del_flag char(1)DEFAULT '0' NOT NULL,PRIMARY KEY(id)
oracle创建表之前判断表是否存在,如果存在则删除已有表 写个匿名块就行了,例子:SQL>;create table test(a number);Table created SQL>;SQL>;declare 2 v_count number;3 begin 4 select count(1)into v_count from user_tables t where t.T
ORACLE 判断表是否存在,存在则删除方法 Oracl 数据库也没有个半段表是否存在,存在则删除的语句,经过研究和改写他人的方法先隆重推出绝对能用性的Oracle判断表是否存在,存在则删除方法,在Oracle10g上试验通过。方法 CREATE OR REPLACE FUNCTION PROC_NAME(T_NAME IN VARCHAR2)RETURN NUMBER IS V_CNT number;V_SQL VARCHAR2(100);BEGINV_CNT:=0;SELECT COUNT(*)INTO V_CNT FROM USER_TABLES WHERE TABLE_NAME=T_NAME;IF V_CNT=0 THENRETURN 0;elseV_SQL:='DROP TABLE '|T_NAME;execute immediate V_SQL;DBMS_OUTPUT.PUT_LINE(V_SQL|' 执行成功');RETURN 1;END IF;EXCEPTIONWHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLCODE|SQLERRM);
oracle创建表之前判断表是否存在,如果存在则删除已有表 Mysql 创建表之前判断表是否存在,如果存在则删除已有表12345678910111213141516171819DROP TABLE IF EXISTS sys_area;CREATE TABLE sys_areaid int NOT NULL AUTO_INCREMENT COMMENT '编号',parent_id varchar(64)NOT NULL COMMENT '父级编号',parent_ids varchar(2000)NOT NULL COMMENT '所有父级编号',name varchar(100)NOT NULL COMMENT '名称',sort decimal(10,0)NOT NULL COMMENT '排序',code varchar(100)COMMENT '区域编码',type char(1)COMMENT '区域类型',create_by varchar(64)NOT NULL COMMENT '创建者',create_date datetime NOT NULL COMMENT '创建时间',update_by varchar(64)NOT NULL COMMENT '更新者',update_date datetime NOT NULL COMMENT '更新时间',remarks varchar(255)COMMENT '备注信息',del_flag char(1)DEFAULT '0' NOT NULL COMMENT '删除标记',PRIMARY KEY(id)COMMENT='区域表';MySql 自增长 AUTO_INCREMENTOracle 创建表之前判断表是否存在,如果存在则删除已有表declarenum number;beginselect count(1)into num from user_tables where table_name=upper('sys_area');if num>;0 then。
oracle创建表之前判断表是否存在,如果存在则删除已有表 写个匿名块就行了,例子:SQL>;create table test(a number);Table createdSQL>;SQL>;declare2 v_count number;3 begin4 select count(1)into v_count from user_tables t where t.TABLE_NAME='TEST';5 if v_count>;0 then6 execute immediate'drop table TEST';7 end if;8 execute immediate 'create table test(b number)';9 end;10/PL/SQL procedure successfully completedSQL>;select*from test;B
oracle创建表之前判断表是否存在,如果存在则删除已有表 不用判断,直接先执行删除你要创建的表名,然后再执行创建语句;很完美,为什么要判断呢?