1、创建表

--创建表 emp6

方法一:

create or replace procedure ProCreateTable(var_tableName in varchar2) is
  var_count int:=0;
begin
  select count(*) into var_count from user_tables where upper(table_name)=var_tableName;--all_all_tables
  if var_count>0 then
 dbms_output.put_line('Table '||var_tableName||' is already exist.');
 execute immediate 'drop table '||var_tableName||'';
  end if; 
end ProCreateTable;
/

execute ProCreateTable('EMP5');
drop procedure ProCreateTable;
create table EMP5
(
  empno    NUMBER(6) not null,
  ename    VARCHAR2(20),
  job      VARCHAR2(20),
  mgr      NUMBER(4),
  hiredate DATE,
  sal      NUMBER(8,2),
  comm     NUMBER(8,2),
  deptno   NUMBER(2)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );

方法二;

create or replace procedure ProCreateBable(var_tableName in varchar2) is
  var_count int:=0;
begin
  select count(*) into var_count from user_tables where upper(table_name)=var_tableName;
  if var_count>0 then
    --dbms_output.put_line('Table '||var_tableName||' is aready exit.');
 execute immediate 'drop table '||var_tableName||'';
  end if;
  --dbms_output.put_line('Begin to add table '||var_tableName||'.');
  execute immediate 'create table '||var_tableName||' as (select * from emp)';
end ProCreateBable;
/
execute ProCreateBable('EMP4');
drop procedure ProCreateBable;

2、新增主键

--表 emp6 新增主键 ename
--alter table emp5 drop constraint PK_EMP5;
--alter table emp5 add constraint PK_EMP5 primary key (EMPNO);
create or replace procedure ProAddPrimaryKey(
  var_tableName in varchar2,
  var_primaryKeyName in varchar2,
  var_column in varchar2
) is
var_count_table int:=0;
var_count_index int:=0;
begin
  select count(*) into var_count_table from user_tables where table_name=var_tableName;
  if var_count_table>0 then
 select count(*) into var_count_index from user_indexes where table_name=var_tableName and index_name=var_primaryKeyName;
 if var_count_index>0 then
   dbms_output.put_line('Begin to drop Primary Key.');
   execute immediate 'alter table '||var_tableName||' drop constraint '||var_primaryKeyName||'';
 end if;
 dbms_output.put_line('Begin to add Primary Key.');
 execute immediate 'alter table '||var_tableName||' add constraint '||var_primaryKeyName||' primary key ('||var_column||')';
  end if;
end;
/
 
execute ProAddPrimaryKey('EMP5','PK_EMP5','EMPNO');
drop procedure ProAddPrimaryKey;

3、新增外键

--表emp6新增外键 deptno

--select * from user_cons_columns where table_name='EMP5' and constraint_name='FK_DEPTNO5';
--alter table emp5 drop constraint PK_EMP5;
--alter table emp5 add constraint PK_EMP5 foreign key (EMPNO) references DEPT (DEPTNO);
create or replace procedure ProAddForeignKey(
  var_tableName in varchar2,
  var_ForeignKeyName in varchar2,
  var_column in varchar2
) is
var_count_table int:=0;
var_count_index int:=0;
begin
  select count(*) into var_count_table from user_tables where table_name=var_tableName;
  if var_count_table>0 then
 select count(*) into var_count_index from user_cons_columns where table_name=var_tableName and constraint_name=var_ForeignKeyName;
 --dbms_output.put_line(var_count_index);
 if var_count_index>0 then
   --dbms_output.put_line('Drop exist Forign Key.');
   execute immediate 'alter table '||var_tableName||' drop constraint '||var_ForeignKeyName||'';
 end if;
 --dbms_output.put_line('Add Forign Key.');
 execute immediate 'alter table '||var_tableName||' add constraint '||var_ForeignKeyName||' foreign key ('||var_column||') references DEPT (DEPTNO)';
  end if;
end;
/
 
execute ProAddForeignKey('EMP5','FK_DEPTNO5','DEPTNO');
drop procedure ProAddForeignKey;

4、新增索引

--表emp6新增索引(使用ename列)
--Add Index
--select * from user_indexes t where t.TABLE_NAME = upper('EMP5') and t.INDEX_NAME=UPPER('INDEX_ENAME5');
--select * from user_constraints t where upper(t.TABLE_NAME)='EMP5' and upper(t.INDEX_NAME)='INDEX_EAME5'
--select * from user_tables where table_name ='EMP5';
--drop index index_ename5;
--create index index_ename5 on emp5 (ename);
set serveroutput on
create or replace procedure ProAddIndex(var_tableName in varchar2,var_indexName in varchar2,var_column in varchar2) is
  var_tableCount int:=0;
  var_indexCount int:=0;
begin
  --dbms_output.put_line('Begin to add index');
  select count(*) into var_tableCount from user_tables where table_name = upper(var_tableName);
  if var_tableCount>0 then
    select count(*) into var_indexCount from user_indexes where table_name = upper(var_tableName) and INDEX_NAME=upper(var_indexName);
 if var_indexCount>0 then
   dbms_output.put_line('drop index '||var_indexName||' at first.');
   execute immediate 'drop index '||var_indexName||'';
 end if;
   execute immediate 'create index '||var_indexName||' on  '||var_tableName||' ('||var_column||')';
  else
    dbms_output.put_line('Table '||var_tableName||' is not exist.');
  end if;
end ProAddIndex;
/
execute ProAddIndex('emp66','index_ename5','ename');
drop procedure  ProAddIndex;

5、新增列

--表emp6新增列A1
set serveroutput on

create or replace procedure ProAddColumn(var_tableName varchar2,var_addColumnName varchar2) is
var_countTable int:=0;
var_countColumn int:=0;
begin
  select count(*) into var_countTable from user_tables where table_name=upper(var_tableName);
  if var_countTable>0 then
    select count(*) into var_countColumn from user_tab_columns where table_name=upper(var_tableName) and column_name=upper(var_addColumnName);
    if var_countColumn>0 then
   dbms_output.put_line('drop column '||var_addColumnName||' at first.');
      execute immediate 'alter table '||var_tableName||' drop column '||var_addColumnName||'';
    end if;
    execute immediate 'alter table '||var_tableName||' add ('||var_addColumnName||' varchar2(20))';
  else
    dbms_output.put_line('Table '||var_tableName||'is not exist.');
  end if;
end;
/
execute ProAddColumn('emp6','A1');

4、移动表数据,且ID递增

--move data from emp5 to Emp6
--truncate table emp6;
--将emp5表中的数据移动到emp6表中,且在表emp6原有基础上empno递增
create or replace procedure ProMoveData is
  var_maxEmpno int:=0;
begin
  select max(empno) into var_maxEmpno from emp6;
  if var_maxEmpno is null then
    var_maxEmpno:=5000;
  else
    var_maxEmpno := var_maxEmpno+100;
  end if;
 
  for var_empRecord in (select * from emp5)
  loop
    var_maxEmpno := var_maxEmpno+1;
    insert into emp6 (empno,ename,job,mgr,hiredate,sal,comm,deptno) values(var_maxEmpno, var_empRecord.ename, var_empRecord.job, var_empRecord.mgr,
   var_empRecord.hiredate, var_empRecord.sal, var_empRecord.comm, var_empRecord.deptno);
  end loop;
  commit;
end ProMoveData;
/
execute ProMoveData();

存储过程实现创建修改表及其数据相关推荐

  1. SQL(创建新表导入数据)

    创建新表导入数据 1 在数据库中创建一个新的数据库,命名. 2 命名之后在数据库文件选择路径,两个都要确定. 3 在新建的数据库中新建一个表,添加所需要的数据后, 要设计一个ID:在ID列名设计主键, ...

  2. oracle 修改2个表,oracle学习笔记2:创建修改表

    1.创建表 CREATE TABLE ORDERINFO ( ORDERID NUMBER(*, 0) NOT NULL , ORDERCODE VARCHAR2(20 BYTE) NOT NULL ...

  3. mysql语句创建临时表并存入数据_mysql实例:在存储过程中创建临时表并储存数据...

    在mysql存储过程中创建临时表,并保存数据到该表,然后根据存储过程调用的例子. 是学习mysql存储过程的好例子,值得参考. 代码: mysql> mysql> CREATE TABLE ...

  4. MySQL授权修改表结构_MySQL创建修改表结构

    一.数据库的概述 1.什么是数据库 DB,DataBase 数据库:依照某种数据模型进行组织并存放到存储器的数据集合 DBMS,DataBase Management System 数据库管理系统:用 ...

  5. MySQL创建相同表和数据命令

    创建和表departments结构和数据一样的表departments_t mysql> create table departments_t like departments; Query O ...

  6. Mysql的存储过程修改表的数据:项目上一个小练习

    把所有的记录中的周数进行加52  一共十三万条的数据 思路: 先查询出来,把结果进行保存: 把进行使用update进行更新: create procedure changeweek2(in id_su ...

  7. django批量修改table_Django 使用 modelformset 组件批量修改表单数据

    1.models.py: class StudentStudyRecord(models.Model): ''' 学生学习记录 ''' student = models.ForeignKey(verb ...

  8. layui数据表格,Switch按钮点击后修改表单数据

    layui是一个很好的前端模板,但是个人觉得写的教程不太友好,不适合初学者(像我这样的菜鸟) 最近在写一个数据表格,官方是这样展示的 <script type="text/html&q ...

  9. 满满干货!mysql无法修改表的数据

    基于 Servlet 容器的 Web MVC 身为 Java 开发者,对于 Spring 框架并不陌生.它起源于 2002 年.Rod Johnson 著作<Expert One-on-One ...

  10. sql添加、修改、删除数据,修改删除数据库表。

    在创建完数据库的表格后,接下来要做的显然就是对表格的数据进行编辑了,这篇文章整理了一些关于表格处理的基本方法: 一.添加数据: 在上篇文章中我已经建好了一个t_student的表格,然后往其中添加数据 ...

最新文章

  1. 【洛谷 P2464】[SDOI2008]郁闷的小J(线段树)
  2. Spring定时任务注解@Scheduled+@EnableAsync用法详解(简单说明+应用场景+demo源代码+执行过程分析)
  3. boost::hana::comparing用法的测试程序
  4. JavaScript函数式编程之深入理解纯函数
  5. linux篇:CenterOS6和Center的区别
  6. 联想g510升级方案_联想智慧中国行,聚焦第一古城,助力企业智能升级
  7. python3 [装饰器] 总结
  8. 人脸识别撞脸名画_艺术与时尚结合的极致——当服装设计遇到名画
  9. PTA17、求指定层的元素个数 (10 分)
  10. Python中lambda表达式的语法与应用
  11. apache开源项目--HttpComponents
  12. PhantomJS命令行选项
  13. MS SQL SERVER中的临时表
  14. Mac锁屏的几种方式
  15. 知乎高赞 | 有没有适合XSh练习 Python 的做题类网站?
  16. Gradle项目在IDEA中运行时提示:Unnecessarily replacing a task that does not exist is not supported. Use create
  17. 【python爬虫自学笔记】-----爬取简书网站首页文章标题与链接
  18. uniapp使用picker
  19. 软件测试顶岗实习实习总结
  20. Facebook_Pop的使用指北

热门文章

  1. linux查看cpu与内存
  2. 《五分钟商学院》个人篇学习总结(下)
  3. xshell查看hdfs文件目录路径_hdfs的shell操作
  4. MS17010(永恒之蓝)漏洞利用与复现
  5. ionic3 m3u8在线播放工具,在线播放
  6. 26局部与分割-平均背景法和codebook背景学习法
  7. Java项目源码下载S2SH基于java的保险业务管理系统
  8. Excel中将角度与弧度之间相互转换的公式
  9. 美军综合电子信息系统
  10. 商户都在用的进销存软件,哪一个性价比最高?