ORACLE 12C 生產腳本規範

數據庫規範

oracle數據庫安裝若是 ZHS16GBK,腳本文件編碼格式請用相同的ansi格式

1.創建表空間和用戶

-------創建kdbase----------
sqlplus / as sysdba;
alter session set container=PDBORCL;  
drop user ktest cascade;
drop tablespace TS_KTEST including contents and datafiles cascade constraints;

--2.創建表空間
create tablespace TS_KTEST datafile 'C:\app\oracle\oradata\orcl\ktest.dbf' size 32M autoextend on next 100M maxsize 15000M extent management local;
--3.重啓OracleServiceOrcl服務
exit
lsnrctl stop
sqlplus / as sysdba
alter session set container=PDBORCL; 
shu immediate
startup
exit
lsnrctl start

sqlplus / as sysdba
alter session set container=PDBORCL; 
--4.創建數據庫用戶
create user ktest identified by ktest default tablespace TS_KTEST;
GRANT 
  CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,
  ALTER ANY TABLE, ALTER ANY PROCEDURE,
  DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,
  SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
  TO ktest;
GRANT connect,resource TO ktest;
alter user ktest quota unlimited on TS_KTEST;
--解決PLSQL無法連接的問題
grant dba to ktest;  

2.創建對象

2.1創建表

--存在就刪除函數(函數中使用execute immediate不能執行DDL語句刪除表結構。)
declare tb_num number :=0;
BEGIN
  select count(1) into tb_num from user_tables where table_name = upper('TABLE_NAME') ;
    if tb_num > 0 then
        execute immediate 'drop table TABLE_NAME cascade constraints';
    end if;
END;
--創建表
create table TABLE_NAME 
(
   RECORD_SNO           INTEGER     default SEQ_TABLE_NAME.NEXTVAL ,
   CUST_CODE            VARCHAR2(32),
   YY_CODE             VARCHAR2(32),
   UP_DATE              VARCHAR2(10),
   CREATE_DATE          VARCHAR2(10),
   CREATE_TIME          VARCHAR2(10),
   CREATE_STA           VARCHAR2(1),
   REMARK               VARCHAR2(256),
   constraint PK_TABLE_NAME primary key (RECORD_SNO)
);

comment on table TABLE_NAME is
'一碼通任務流水錶';

comment on column TABLE_NAME.RECORD_SNO is
'記錄號';

comment on column TABLE_NAME.CUST_CODE is
'客戶代碼';

comment on column TABLE_NAME.YY_CODE is
'測試代碼';

comment on column TABLE_NAME.UP_DATE is
'更新日期';

comment on column TABLE_NAME.CREATE_DATE is
'生成日期';

comment on column TABLE_NAME.CREATE_TIME is
'生成時間';

comment on column TABLE_NAME.CREATE_STA is
'生成狀態';

comment on column TABLE_NAME.REMARK is
'備註';

--生成刪除表的語句(注意結果在notepad++中將換行換成\r\n , ~換成')
select 'declare tb_num'||rownum||' number :=0;換行BEGIN換行  select count(1) into tb_num'||rownum||' from user_tables where table_name = upper(~' ||
       table_name ||
       '~) ;換行    if tb_num'||rownum||' > 0 then換行        execute immediate ~drop table ' ||
       table_name || ' cascade constraints~;換行    end if;換行END;換行/換行' as del_tb_sql
  from user_tables;

2.2創建序列器

--BEGIN END之間用execute immediate 執行DDL語句。
declare sq_num number :=0;
BEGIN
    select count(1) into sq_num from user_sequences where sequence_name = upper('SEQ_NAME') ;
    if sq_num > 0 then
        execute immediate 'drop sequence SEQ_NAME';
    end if;
END;
/
create sequence SEQ_NAME
minvalue 1
maxvalue 9999999999999999999999999999
start with 100000
increment by 1
cache 20;

--生成刪除序列器的語句(注意結果在notepad++中將換行換成\r\n , ~換成')
  select 'declare sq_num'||rownum||' number :=0;換行BEGIN 換行 select count(1) into sq_num'||rownum||' from user_sequences where sequence_name = upper(~' ||
       sequence_name ||
       '~) ;換行 if sq_num'||rownum||' > 0 then 換行    execute immediate  ~drop sequence ' ||
       sequence_name || '~; 換行 end if;換行END;換行/換行' as del_sq_sql
  from user_sequences;
發佈了91 篇原創文章 · 獲贊 3 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章