1.創建函數模板
CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN str_split
PIPELINED
AS
v_length NUMBER := LENGTH(p_string);
v_start NUMBER := 1;
v_index NUMBER;
BEGIN
WHILE(v_start <= v_length)
LOOP
v_index := INSTR(p_string, p_delimiter, v_start);
IF v_index = 0
THEN
PIPE ROW(SUBSTR(p_string, v_start));
v_start := v_length + 1;
ELSE
PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));
v_start := v_index + 1;
END IF;
END LOOP;
RETURN;
END splitstr;
2.存儲過程模板
CREATE OR REPLACE PROCEDURE Pro_Demo(biz_date varchar2,
in_date varchar2,
out_code out varchar2,
out_msg out varchar2) is
V_SQL VARCHAR2(4000);
V_TEMP_SQL VARCHAR2(4000);
V_COUNT INTEGER;
V_PROC_NAME VARCHAR2(50) := 'Pro_Demo';
V_TARGET_SCHEMA VARCHAR2(50) := 'Error_Demo';
V_ERR_MSG VARCHAR2(4000) := ' ';
V_ERR_SQL VARCHAR2(200) := ' ';
V_OWNER VARCHAR2(20) := 'SYWG_BASE';
begin
EXECUTE IMMEDIATE 'TRUNCATE TABLE T_TEST';
FOR S_DEL_EVENT_D IN (select *
from T_TEST
where event_flag = '02') LOOP
DELETE FROM T_TEST
where T_TEST.Event_Id = S_DEL_EVENT_D.Event_Id
and T_TEST.Department_Id = S_DEL_EVENT_D.Department_Id;
END LOOP;
COMMIT;
out_code := 0;
out_msg := '存儲過程執行成功!';
--異常處理
EXCEPTION
WHEN OTHERS THEN
V_ERR_MSG := '系統錯誤:SQLCODE=' || SQLCODE || ',SQLSTATE=' || SQLERRM ||
' 數據日期:';
BEGIN
ROLLBACK;
INSERT INTO PROC_ERROR_MESSAGES
(PROC_NAME, TARGET_SCHEMA, ERR_MSG, ERR_SQL, RUN_DATE)
VALUES
(V_PROC_NAME, V_TARGET_SCHEMA, V_ERR_MSG, V_ERR_SQL, SYSDATE);
COMMIT;
out_code := 1;
out_msg := '存儲過程執行失敗!';
COMMIT;
RETURN;
END;
end Pro_Demo;
3.賦權模板
grant select on T_TEST to hothead007;
4.同義詞模板
create synonym T_TEST for CRMII.T_TEST;
5.視圖模板
CREATE OR REPLACE VIEW T_TEST_VIEW AS
SELECT T.EVENT_FLOW_ID,
T.EVENT_ID,
T.EVENT_NAME;
6.表以及約束條件
create table T_PL_EVENT_MANAGE
(
seq_no NUMBER(19) not null,
department_id VARCHAR2(30),
push_start_time VARCHAR2(2),
push_end_time VARCHAR2(2)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table T_PL_EVENT_MANAGE
add constraint PK_T_PL_EVENT_MANAGE primary key (SEQ_NO)
using index
tablespace USERS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
alter table T_PL_EVENT_MANAGE
add constraint UK_T_PL_EVENT_MANAGE unique (DEPARTMENT_ID, EVENT_ID)
using index
tablespace USERS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
7.創創建表空間
create tablespace HOTHEAD007_TBS
logging
datafile '/oracle/motdata/hothead007.dbf' size 1000m autoextend on next 200m
extent management local segment space management auto;
8.oralce環境數據庫數據遷移
例如:以下是通過從已部署過mot的仿真環境,將基礎數據源導入到新部署的oracle環境
1、從orac導出hothead007用戶dmp數據源文件。
exp 用戶名/密碼@orac owner=hothead007 file=exp_hothead007.dmp log=exp_hothead007.log buffer=6000000
2、導入hothead007用戶dmp數據文件至新部署的oracle環境。
imp 用戶名/密碼@jjrxd205 fromuser=hothead007 touser=hothead007 file=exp_hothead007.dmp log=imp_hothead007.log ignore=y
說明:導入數據庫文件後,如果執行SQL缺少權限,則需要賦予相應的執行權限
8.分支語句
if ... then
...
elsif ... then
...
else
...
end if;
or
if ... then
...
else
...
end if;
or
if ... then
...
end if;
注:if後的條件不加括號
例子如下:
if p_fh <> '' then
p_strsql := p_strsql || ' and b.fh = p_fh';
end if;