數據庫規範
oracle數據庫安裝若是 ZHS16GBK,腳本文件編碼格式請用相同的ansi格式
1.創建表空間和用戶
sqlplus / as sysdba;
alter session set container=PDBORCL;
drop user ktest cascade;
drop tablespace TS_KTEST including contents and datafiles cascade constraints;
create tablespace TS_KTEST datafile 'C:\app\oracle\oradata\orcl\ktest.dbf' size 32M autoextend on next 100M maxsize 15000M extent management local;
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;
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;
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;