oracel存儲過程編寫 以及plsql存儲過程的debug

一、語法: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,右邊綠色三角符號爲運行,小的粉色方形按鈕爲單步跟蹤,單步跳出等;

相關文章
相關標籤/搜索