• Oracle 判断表或字段是否存在新增/修改表结构可重复执行sql


    DECLARE
    
      num NUMBER;
    BEGIN
    
    	-- 新增学生表 student
    	SELECT
    		COUNT (1) INTO num
    	FROM
    		cols
    	WHERE
    		table_name = UPPER ('student') ;
    	IF num > 0 THEN
    		EXECUTE IMMEDIATE 'DROP TABLE student' ; 
    		EXECUTE IMMEDIATE 'CREATE TABLE student (
    							id NUMBER NOT NULL,
    							name VARCHAR2(40) NULL ,
    							xb VARCHAR2(40) NULL ,
    							age int(3) NULL ,
    							birthday DATE NULL ,
    							className VARCHAR2(80) NULL
    							)' ;
    		EXECUTE IMMEDIATE 'ALTER TABLE student ADD PRIMARY KEY (id)' ;
    	ELSE
    		EXECUTE IMMEDIATE 'CREATE TABLE student (
    							id NUMBER NOT NULL,
    							name VARCHAR2(40) NULL ,
    							xb VARCHAR2(40) NULL ,
    							age int(3) NULL ,
    							birthday DATE NULL ,
    							className VARCHAR2(80) NULL
    							)' ;
    		EXECUTE IMMEDIATE 'ALTER TABLE student ADD CHECK (ID IS NOT NULL)' ;
    		EXECUTE IMMEDIATE 'ALTER TABLE student ADD PRIMARY KEY (ID)' ;
    	END IF ;
    	
    	-- 学生表新增班级 className 字段
    	SELECT COUNT(1)
    		INTO num
    		from cols
    		where table_name = upper('student')
    		 and column_name = upper('className');
    		IF num > 0 THEN
    	execute immediate 'alter table student MODIFY (className varchar2(20))';
    	ELSE
    	execute immediate 'alter table student add className varchar2(40)';
    	END IF;
    	
    END;
    

      

  • 相关阅读:
    第4章.计算节点
    Eclipse插件ViPlugin2.X的破解方法
    金刚经
    js
    C++ 重写重载重定义区别
    string::substr()简介
    信息熵与二进制
    一个简单的条件概率问题
    HPLINUX hplinux 安装升级 至 jdk1.8
    linux 解压命令
  • 原文地址:https://www.cnblogs.com/Big-Boss/p/13255130.html
Copyright © 2020-2023  润新知