一、語法:sql
create or replace procedure messagebackup_createTable //此處存儲過程名稱不能超過30個字符oracle
as tableName varchar2(100); //聲明變量測試
tableCount Number;this
thisYearMonth;debug
begin 索引
thisYearMonth:=TO_CHAR(sysdate,'yyyyMM'); //給變量賦值使用 := 圖片
tableName:='MESSAGEBACKUP_'||thisYearMonth; //oracle大小寫敏感,儘可能使用大寫;使用變量鏈接是使用符號 ||變量table
select count(1) into tableCount from user_tables where table_name = tableName; //若是上一行tableName的賦值使用的是小寫,這塊會出錯,明明已經建好了這個表可是查詢的時候仍是0,缺又不能從新建立; 判斷當前用戶下是否有要建立的表,並將數量賦值給tableCount,select count(1) into tableCount from user_tables where table_name = tableName; class
if tableCount=0 then test
execute immediate 'create table '||tableName||' //execute immediate 馬上執行,若是當前存儲結構下邊用到當前創鍵的表格就不會報不存在的
as select * from MESSAGEBUCKUP_TEMP where 1=2'; //複製表結構而不復製表數據的oracle寫法 若是須要新建不少表結構同樣的表,能夠把基本表結構創建出來,而後複製這個表結構,這樣若是改了基本表結構就只須要修改基礎表結構,不夠用改存儲結構;
execute immediate 'create index IDX_MSG_'||thisYearMonth||'_MOBILE' on '||tableName||' (MOBILE)'; //在表tableName的Mobile字段創建索引
EXECUTE IMMEDIATE 'create sequence MSGBAK_'||thisYearMonth||'_ID_SEQ //創建sequence 主要是爲了主鍵自增
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
NOCACHE';
EXECUTE IMMEDIATE 'create or replace trigger T_MSGBAK_'||thisMonth||'_ID //創建觸發器爲了表新增行的時候觸發給行的ID設置自增值
before insert on '||tableName1||'
for each row
begin
select MSGBAK_'||thisMonth||'_ID_SEQ.nextval into :new.id from dual;
end;'; // 觸發器結束須要有分號 ; 也就是說在 ''號裏邊的分號必須有否則會報錯;
end if; //結束一個if條件
if xxx then xxxx end if; //另外一個if條件
END messagebackup_createTable; //結束這個存儲過程
二、執行存儲過程
begin
messagebackup_createTable;
end;
三、plsql如何大小寫切換
選中須要改變大小寫的文本單擊右鍵-->選項-->選擇大寫(小寫)
四、plsql存儲過程的debug
登陸plsql選擇MyObject --> procedure -->選中要debug的存儲過程單擊右鍵 --> test(測試)-->彈出窗點擊搜索那個圖片啓動debug,右邊綠色三角符號爲運行,小的粉色方形按鈕爲單步跟蹤,單步跳出等;