存储过程实现创建修改表及其数据
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
);
方法二;
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;
/
drop procedure ProCreateBable;
2、新增主键
--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
--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、新增索引
--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;
/
drop procedure ProAddIndex;
5、新增列
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递增
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;
/
存储过程实现创建修改表及其数据相关推荐
- SQL(创建新表导入数据)
创建新表导入数据 1 在数据库中创建一个新的数据库,命名. 2 命名之后在数据库文件选择路径,两个都要确定. 3 在新建的数据库中新建一个表,添加所需要的数据后, 要设计一个ID:在ID列名设计主键, ...
- oracle 修改2个表,oracle学习笔记2:创建修改表
1.创建表 CREATE TABLE ORDERINFO ( ORDERID NUMBER(*, 0) NOT NULL , ORDERCODE VARCHAR2(20 BYTE) NOT NULL ...
- mysql语句创建临时表并存入数据_mysql实例:在存储过程中创建临时表并储存数据...
在mysql存储过程中创建临时表,并保存数据到该表,然后根据存储过程调用的例子. 是学习mysql存储过程的好例子,值得参考. 代码: mysql> mysql> CREATE TABLE ...
- MySQL授权修改表结构_MySQL创建修改表结构
一.数据库的概述 1.什么是数据库 DB,DataBase 数据库:依照某种数据模型进行组织并存放到存储器的数据集合 DBMS,DataBase Management System 数据库管理系统:用 ...
- MySQL创建相同表和数据命令
创建和表departments结构和数据一样的表departments_t mysql> create table departments_t like departments; Query O ...
- Mysql的存储过程修改表的数据:项目上一个小练习
把所有的记录中的周数进行加52 一共十三万条的数据 思路: 先查询出来,把结果进行保存: 把进行使用update进行更新: create procedure changeweek2(in id_su ...
- django批量修改table_Django 使用 modelformset 组件批量修改表单数据
1.models.py: class StudentStudyRecord(models.Model): ''' 学生学习记录 ''' student = models.ForeignKey(verb ...
- layui数据表格,Switch按钮点击后修改表单数据
layui是一个很好的前端模板,但是个人觉得写的教程不太友好,不适合初学者(像我这样的菜鸟) 最近在写一个数据表格,官方是这样展示的 <script type="text/html&q ...
- 满满干货!mysql无法修改表的数据
基于 Servlet 容器的 Web MVC 身为 Java 开发者,对于 Spring 框架并不陌生.它起源于 2002 年.Rod Johnson 著作<Expert One-on-One ...
- sql添加、修改、删除数据,修改删除数据库表。
在创建完数据库的表格后,接下来要做的显然就是对表格的数据进行编辑了,这篇文章整理了一些关于表格处理的基本方法: 一.添加数据: 在上篇文章中我已经建好了一个t_student的表格,然后往其中添加数据 ...
最新文章
- 【洛谷 P2464】[SDOI2008]郁闷的小J(线段树)
- Spring定时任务注解@Scheduled+@EnableAsync用法详解(简单说明+应用场景+demo源代码+执行过程分析)
- boost::hana::comparing用法的测试程序
- JavaScript函数式编程之深入理解纯函数
- linux篇:CenterOS6和Center的区别
- 联想g510升级方案_联想智慧中国行,聚焦第一古城,助力企业智能升级
- python3 [装饰器] 总结
- 人脸识别撞脸名画_艺术与时尚结合的极致——当服装设计遇到名画
- PTA17、求指定层的元素个数 (10 分)
- Python中lambda表达式的语法与应用
- apache开源项目--HttpComponents
- PhantomJS命令行选项
- MS SQL SERVER中的临时表
- Mac锁屏的几种方式
- 知乎高赞 | 有没有适合XSh练习 Python 的做题类网站?
- Gradle项目在IDEA中运行时提示:Unnecessarily replacing a task that does not exist is not supported. Use create
- 【python爬虫自学笔记】-----爬取简书网站首页文章标题与链接
- uniapp使用picker
- 软件测试顶岗实习实习总结
- Facebook_Pop的使用指北